home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / fulpak / fultut.c < prev    next >
C/C++ Source or Header  |  1997-09-16  |  68KB  |  3,230 lines

  1. # include <dos.h>
  2. # include <string.h>
  3. # include <stdio.h>
  4. # include <bios.h>
  5. # include <stdlib.h>
  6. # include <conio.h>
  7. # include <mem.h>
  8. # include <dir.h>
  9. # include <stdarg.h>
  10.  
  11. # include "simpwin.h"
  12. # include "swskdef.h"
  13. # include "mouse23.h"
  14. # include "fontedit.h"
  15. # include "vgacolor.h"
  16.  
  17. # define MAIN_MENU_WIN         1
  18. # define MAIN_MENU_MENU        0
  19. # define DEMO_MENU_MENU        1
  20. # define DEMO_MENU_WIN         2
  21. # define TUT_MENU_WIN          3
  22. # define TUT_MENU_MENU         2
  23. # define SIMPLE_DEMO_WIN       4
  24. # define SIMPLE_DEMO_MENU      3
  25. # define FONT_DEMO_WIN         5
  26. # define FONT_DEMO_MENU        4
  27. # define VGA_DEMO_WIN          6
  28. # define VGA_DEMO_MENU         5
  29. # define FUNCTION_MENU_WIN     7
  30. # define FUNCTION_MENU_MENU    6
  31. # define EXEC_MENU_WIN         8
  32. # define EXEC_MENU_MENU        7
  33. # define SIMPLE_LIBS_WIN       9
  34. # define SIMPLE_LIBS_MENU      8
  35. # define FONT_LIBS_WIN        10
  36. # define FONT_LIBS_MENU        9
  37. # define VGA_LIBS_WIN         11
  38. # define VGA_LIBS_MENU        10
  39. # define MOUSE_LIBS_WIN       12
  40. # define MOUSE_LIBS_MENU      11
  41. # define FONT_EXEC_WIN        13
  42. # define FONT_EXEC_MENU       12
  43. # define VGA_EXEC_WIN         14
  44. # define VGA_EXEC_MENU        13
  45. # define QUIT_WIN             16
  46. # define TEXT_WIN             9
  47. # define TEXT_DEMO_WIN        15
  48. # define ENTER_WIN            17
  49. # define ERROR_WIN            18
  50. # define DATA_OK_WIN          19
  51. # define PRINT_WIN            20
  52.  
  53.  
  54. int mou_switch = 0;
  55. int display_switch = 1;
  56. char disk[5] = "C";
  57. unsigned char palette[16];
  58. int video_adapter = 0;
  59. char *edit_buff;
  60. char *t_buff;
  61. int buttons;
  62.  
  63. int main_menu(void);
  64. int quit(void);
  65. int demo_menu(void);
  66. int tutor_menu(void);
  67. int register_print(void);
  68. int function_menu(void);
  69. int simp_libs_menu(void);
  70. int font_libs_menu(void);
  71. int vga_libs_menu(void);
  72. int mouse_libs_menu(void);
  73. int execute_menu(void);
  74. int font_exec_menu(void);
  75. int vga_exec_menu(void);
  76. int text_screen(int file_num);
  77. int file_text(char *file_name,int file_num);
  78. int file_screen(char *file_name);
  79. int simp_demo_menu(void);
  80. int demo_popup(void);
  81. int shad_demo(void);
  82. int boarder_demo(void);
  83. int enter_demo(void);
  84. int data_ok(void);
  85. int scr_form(void);
  86. int song_demo(void);
  87. int font_demo_menu(void);
  88. void dual_font_demo(void);
  89. void large_font_demo(void);
  90. void multi_font_demo(void);
  91. int vga_demo_menu(void);
  92. int color_demo(void);
  93. int gray_demo(void);
  94. int palette_64(void);
  95. int mouse_demo(void);
  96. void load_default_palette(int toggle);
  97. void view_tut(int file_num,char *lable);
  98.  
  99.  
  100. void main(void)
  101. {
  102.     int i,j,k;
  103.  
  104.     if(init_window(25,40,10,disk,1) != 0)
  105.     {
  106.         cprintf("Can't init swin libs!");
  107.         exit(1);
  108.     }
  109.     if(mouinit() != 0)
  110.     {
  111.         cprintf("Can't init mouse23 libs!");
  112.         uninit_window();
  113.         exit(1);
  114.     }
  115.     load_default_palette(2);
  116.     if((video_adapter = vga_get_adapter()) == 0)
  117.     {
  118.         cprintf("This program requiers a VGA/EGA vidoe card");
  119.         uninit_window();
  120.         mouuninit();
  121.         exit(1);
  122.     }
  123.     if(video_adapter == 9)
  124.     {
  125.         if(init_vgaedit() != 0)
  126.         {
  127.             cprintf("Can't init vgacolr libs!");
  128.             uninit_window();
  129.             mouuninit();
  130.             exit(1);
  131.         }
  132.     }
  133.     if(init_multi_font("ibmstd.fnt","script.fnt",palette,0) != 0)
  134.     {
  135.         cprintf("Can't init fonted libs!");
  136.         if(video_adapter == 9)
  137.         {
  138.             uninit_vgaedit();
  139.         }
  140.         uninit_window();
  141.         mouuninit();
  142.         exit(1);
  143.     }
  144.     if((edit_buff = (char *)malloc(22 * 80)) == NULL)
  145.     {
  146.         cprintf("Not enough memory!");
  147.         uninit_multi_font();
  148.         if(video_adapter == 9)
  149.         {
  150.             uninit_vgaedit();
  151.         }
  152.         uninit_window();
  153.         mouuninit();
  154.         exit(1);
  155.     }
  156.     else
  157.     {
  158.         if((t_buff = (char *)malloc(4000)) == NULL)
  159.         {
  160.             cprintf("Not enough memory!");
  161.             uninit_multi_font();
  162.             if(video_adapter == 9)
  163.             {
  164.                 uninit_vgaedit();
  165.             }
  166.             uninit_window();
  167.             mouuninit();
  168.             free(edit_buff);
  169.             exit(1);
  170.         }
  171.     }
  172.     memset(edit_buff,0,(22 * 80));
  173.     if(load_menu_text("fultut.men") != 0)
  174.     {
  175.         cprintf("Can't find file FULTUT.MEN !");
  176.         uninit_multi_font();
  177.         if(video_adapter == 9)
  178.         {
  179.             uninit_vgaedit();
  180.         }
  181.         uninit_window();
  182.         mouuninit();
  183.         free(edit_buff);
  184.         free(t_buff);
  185.         exit(1);
  186.     }
  187.     if(load_win_data("fultut.win") != 0)
  188.     {
  189.         cprintf("Can't find file FULTUT.WIN !");
  190.         uninit_multi_font();
  191.         if(video_adapter == 9)
  192.         {
  193.             uninit_vgaedit();
  194.         }
  195.         uninit_window();
  196.         mouuninit();
  197.         free(edit_buff);
  198.         free(t_buff);
  199.         exit(1);
  200.     }
  201.     system("cls");
  202.     if((buttons = mouinstalled()) != 0)
  203.     {
  204.         simp_window(30,10,50,12,1,0,2,4,0,0,0,0,0);
  205.         if(loadcurs("moucurs.fnt") == 0)
  206.         {
  207.             moucursortype(0x01);
  208.             mouhide();
  209.             mousetposition(1,1);
  210.             mou_switch = 1;
  211.             write_window(3,2,"Mouse Installed !");
  212.         }
  213.         else
  214.         {
  215.             mou_switch = 0;
  216.             write_window(3,2,"No cursor file !");
  217.             mouhide();
  218.         }
  219.         delay(1000);
  220.     }
  221.     else
  222.     {
  223.         simp_window(23,10,57,12,1,0,2,4,0,0,0,0,0);
  224.         write_window(3,2,"NO mouse driver installed");
  225.         mou_switch = 0;
  226.         mouhide();
  227.         delay(1000);
  228.     }
  229.     hide_cursor();
  230.     k= 3;
  231.     for(i = 0;i < 13;i++)
  232.     {
  233.         for(j = k - 3;j < k;j++)
  234.         {
  235.             simp_window(40 - j,13 - i,40 + j,13 + i,1,0,6,1,0,0,0,0,0);
  236.         }
  237.         k = k + 3;
  238.     }
  239.     simp_window(1,1,80,25,1,0,6,1,0,0,0,0,0);
  240.     k = 3;
  241.     for(i = 0;i < 13;i++)
  242.     {
  243.         for(j = k - 3;j < k;j++)
  244.         {
  245.             window(40 - j,13 - i,40 + j,13 + i);
  246.             load_screen_form(1,"fultut.scr");
  247.         }
  248.         k = k + 3;
  249.     }
  250.     window(1,1,80,25);
  251.     load_screen_form(1,"fultut.scr");
  252.     write_window(35,25," HIT ANY KEY ");
  253.     bioskey(0);
  254.     draw_horizontal_line(196,196,196,2,79,25);
  255.     save_screen(1);
  256.     /*mou_switch = 0;*/
  257.     while(main_menu())
  258.     {
  259.     }
  260.     uninit_multi_font();
  261.     if(video_adapter == 9)
  262.     {
  263.         uninit_vgaedit();
  264.     }
  265.     uninit_window();
  266.     mouuninit();
  267.     free(edit_buff);
  268.     free(t_buff);
  269.     show_cursor();
  270.     system("cls");
  271. }
  272.  
  273. int main_menu(void)
  274. {
  275.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  276.     char lable[3][13] = {"Demo","Tutor","eXit"};
  277.  
  278.  
  279.     if(display_switch)
  280.     {
  281.         load_screen(1);
  282.         call_window(MAIN_MENU_WIN);
  283.         call_menu(MAIN_MENU_MENU,3,2);
  284.         save_screen(2);
  285.     }
  286.     else
  287.     {
  288.         load_screen(2);
  289.     }
  290.     display_switch = 1;
  291.     textcolor(4);
  292.     write_window(3,2,"D");
  293.     write_window(22,2,"T");
  294.     write_window(41,2,"X");
  295.     save_screen_buff();
  296.     i = 0;
  297.     moushow();
  298.     for(;;)
  299.     {
  300.         choice = 0;
  301.         if(mouposition(&mousex,&mousey))
  302.         {
  303.             if(mousey == 4)
  304.             {
  305.                 if((mousex > 5) & (mousex < 12))
  306.                 {
  307.                     i = 0;
  308.                 }
  309.                 else if((mousex > 24) & (mousex < 31))
  310.                 {
  311.                     i = 1;
  312.                 }
  313.                 else if((mousex > 42) & (mousex < 49))
  314.                 {
  315.                     i = 2;
  316.                 }
  317.             }
  318.         }
  319.         if(i < 0)
  320.         {
  321.             i = 0;
  322.         }
  323.         if(i > 2)
  324.         {
  325.             i = 2;
  326.         }
  327.         if(old_i != i)
  328.         {
  329.             mouhide();
  330.             old_i = i;
  331.             load_screen_buff();
  332.             switch(i)
  333.             {
  334.                 case 0 : simp_window(6,4,11,4,0,2,4,3,1,5,0,0,0); break;
  335.                 case 1 : simp_window(25,4,31,4,0,2,4,3,1,5,0,0,0); break;
  336.                 case 2 : simp_window(43,4,48,4,0,2,4,3,1,5,0,0,0); break;
  337.             }
  338.             write_window(2,1,"%s",lable[i]);
  339.             moushow();
  340.         }
  341.         if(bioskey(1) | (mou_switch == 0))
  342.         {
  343.             switch(bioskey(0))
  344.             {
  345.                 case ESC : choice = 4; break;
  346.                 case CURSOR_RIGHT : i = i + 1; break;
  347.                 case CURSOR_LEFT : i = i - 1; break;
  348.                 case ENTER : choice = 1; break;
  349.                 case ALT_D : choice = 2; break;
  350.                 case ALT_T : choice = 3; break;
  351.                 case ALT_X : choice = 4; break;
  352.             }
  353.         }
  354.         if(moubuttonpressed(LEFTBUTTON))
  355.         {
  356.             if(mousey == 4)
  357.             {
  358.                 if(((mousex > 5) & (mousex < 12)) |
  359.                     ((mousex > 24) & (mousex < 31)) |
  360.                     ((mousex > 42) & (mousex < 49)))
  361.                 {
  362.                     choice = 1;
  363.                 }
  364.             }
  365.         }
  366.         if(choice != 0)
  367.         {
  368.             break;
  369.         }
  370.     }
  371.     mouhide();
  372.     load_screen_buff();
  373.     if(choice == 1)
  374.     {
  375.         choice = i + 2;
  376.     }
  377.     pick = 1;
  378.     switch(choice)
  379.     {
  380.         case 2 : while(demo_menu()){} break;
  381.         case 3 : while(tutor_menu()){} break;
  382.         case 4 : pick = quit(); break;
  383.     }
  384.     return(pick);
  385. }
  386.  
  387. int quit(void)
  388. {
  389.  
  390.     call_window(QUIT_WIN);
  391.     write_window(3,2,"Quit Y/N ?");
  392.     show_cursor();
  393.     if(get_choice(14,2,"N") == 1)
  394.     {
  395.         uncall_window(QUIT_WIN);
  396.         hide_cursor();
  397.         return(0);
  398.     }
  399.     uncall_window(QUIT_WIN);
  400.     hide_cursor();
  401.     return(1);
  402. }
  403.  
  404.  
  405. int demo_menu(void)
  406. {
  407.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  408.     char lable[4][13] = {"Simple demo","Font demo","VGA demo","Mouse demo"};
  409.  
  410.     if(display_switch)
  411.     {
  412.         load_screen(2);
  413.         call_window(DEMO_MENU_WIN);
  414.         call_menu(DEMO_MENU_MENU,3,2);
  415.         save_screen(3);
  416.     }
  417.     else
  418.     {
  419.         load_screen(3);
  420.     }
  421.     display_switch = 1;
  422.     textcolor(4);
  423.     write_window(3,2,"S");
  424.     write_window(3,3,"F");
  425.     write_window(3,4,"V");
  426.     write_window(3,5,"M");
  427.     save_screen_buff();
  428.     i = 0;
  429.     moushow();
  430.     for(;;)
  431.     {
  432.         choice = 0;
  433.         if(mouposition(&mousex,&mousey))
  434.         {
  435.             if((mousex > 6) & (mousex < 20))
  436.             {
  437.                 i = mousey - 5;
  438.             }
  439.         }
  440.         if(i < 0)
  441.         {
  442.             i = 0;
  443.         }
  444.         if(i > 3)
  445.         {
  446.             i = 3;
  447.         }
  448.         if(old_i != i)
  449.         {
  450.             old_i = i;
  451.             mouhide();
  452.             load_screen_buff();
  453.             simp_window(7,5 + i,19,5 + i,0,2,4,3,1,5,0,0,0);
  454.             write_window(2,1,"%s",lable[i]);
  455.             moushow();
  456.         }
  457.         if(bioskey(1) | (mou_switch == 0))
  458.         {
  459.             switch(bioskey(0))
  460.             {
  461.                 case ESC : choice = 9; break;
  462.                 case CURSOR_DN : i = i + 1; break;
  463.                 case CURSOR_UP : i = i - 1; break;
  464.                 case ENTER : choice = 1; break;
  465.                 case ALT_S : choice = 2; break;
  466.                 case ALT_F : choice = 3; break;
  467.                 case ALT_V : choice = 4; break;
  468.                 case ALT_M : choice = 5; break;
  469.             }
  470.         }
  471.         if(moubuttonpressed(LEFTBUTTON))
  472.         {
  473.             if((mousex > 6) & (mousex < 19) & (mousey > 4) & (mousey < 9))
  474.             {
  475.                 choice = 1;
  476.             }
  477.             else
  478.             {
  479.                 choice = 9;
  480.             }
  481.         }
  482.         if(choice != 0)
  483.         {
  484.             break;
  485.         }
  486.     }
  487.     mouhide();
  488.     load_screen_buff();
  489.     pick = 1;
  490.     if(choice == 1)
  491.     {
  492.         choice = i + 2;
  493.     }
  494.     switch(choice)
  495.     {
  496.         case 2 : while(simp_demo_menu()){} break;
  497.         case 3 : while(font_demo_menu()){} break;
  498.         case 4 : while(vga_demo_menu()){} break;
  499.         case 5 : mouse_demo(); break;
  500.         case 9 : pick = 0; break;
  501.     }
  502.     display_switch = 0;
  503.     return(pick);
  504. }
  505.  
  506.  
  507. int tutor_menu(void)
  508. {
  509.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  510.     char lable[8][19] = {"General","Legal","Functions","Executes","Support","Quarks","Defines","Register"};
  511.  
  512.     if(display_switch)
  513.     {
  514.         load_screen(2);
  515.         call_window(TUT_MENU_WIN);
  516.         call_menu(TUT_MENU_MENU,3,2);
  517.         save_screen(3);
  518.     }
  519.     else
  520.     {
  521.         load_screen(3);
  522.     }
  523.     display_switch = 1;
  524.     textcolor(4);
  525.     write_window(3,2,"G");
  526.     write_window(3,3,"L");
  527.     write_window(3,4,"F");
  528.     write_window(3,5,"E");
  529.     write_window(3,6,"S");
  530.     write_window(3,7,"Q");
  531.     write_window(3,8,"D");
  532.     write_window(3,9,"R");
  533.     save_screen_buff();
  534.     i = 0;
  535.     moushow();
  536.     for(;;)
  537.     {
  538.         choice = 0;
  539.         if(mouposition(&mousex,&mousey))
  540.         {
  541.             if((mousex > 20) & (mousex < 32))
  542.             {
  543.                 i = mousey - 5;
  544.             }
  545.         }
  546.         if(i < 0)
  547.         {
  548.             i = 0;
  549.         }
  550.         if(i > 7)
  551.         {
  552.             i = 7;
  553.         }
  554.         if(old_i != i)
  555.         {
  556.             old_i = i;
  557.             mouhide();
  558.             load_screen_buff();
  559.             simp_window(21,5 + i,31,5 + i,0,2,4,3,1,5,0,0,0);
  560.             write_window(2,1,"%s",lable[i]);
  561.             moushow();
  562.         }
  563.         if(bioskey(1) | (mou_switch == 0))
  564.         {
  565.             switch(bioskey(0))
  566.             {
  567.                 case ESC : choice = 10; break;
  568.                 case CURSOR_DN : i = i + 1; break;
  569.                 case CURSOR_UP : i = i - 1; break;
  570.                 case ENTER : choice = 1; break;
  571.                 case ALT_G : choice = 2; break;
  572.                 case ALT_L : choice = 3; break;
  573.                 case ALT_F : choice = 4; break;
  574.                 case ALT_E : choice = 5; break;
  575.                 case ALT_S : choice = 6; break;
  576.                 case ALT_Q : choice = 7; break;
  577.                 case ALT_D : choice = 8; break;
  578.                 case ALT_R : choice = 9; break;
  579.             }
  580.         }
  581.         if(moubuttonpressed(LEFTBUTTON))
  582.         {
  583.             if((mousex > 20) & (mousex < 32) & (mousey > 4) & (mousey < 13))
  584.             {
  585.                 choice = 1;
  586.             }
  587.             else
  588.             {
  589.                 choice = 10;
  590.             }
  591.         }
  592.         if(choice != 0)
  593.         {
  594.             break;
  595.         }
  596.     }
  597.     mouhide();
  598.     load_screen_buff();
  599.     pick = 1;
  600.     if(choice == 1)
  601.     {
  602.         choice = i + 2;
  603.     }
  604.     switch(choice)
  605.     {
  606.         case 2 : file_screen("general.txt"); break;
  607.         case 3 : file_screen("disclaim.txt"); break;
  608.         case 4 : while(function_menu()){} break;
  609.         case 5 : while(execute_menu()){} break;
  610.         case 6 : file_text("fultut.men",25); break;
  611.         case 7 : file_text("fultut.men",30); break;
  612.         case 8 : file_screen("defines.txt"); break;
  613.         case 9 : register_print(); break;
  614.         case 10 : pick = 0; break;
  615.     }
  616.     display_switch = pick;
  617.     return(pick);
  618. }
  619.  
  620. int register_print(void)
  621. {
  622.     char data_string[6][30] = {"","","","","",""};
  623.     int data_quant[6] = {0,0,0,0,0,0};
  624.     int done = 0,i = 0,pick;
  625.     int j;
  626.     float price[6] = {0,0,0,0,0,0};
  627.     float total_price = 0;
  628.     int total_quant = 0;
  629.     float sub_total_price = 0;
  630.     float total_s_h = 0L;
  631.  
  632.     call_window(TEXT_WIN);
  633.     load_text(27,"fultut.men");
  634.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  635.     bioskey(0);
  636.     clear_window(0);
  637.     load_text(28,"fultut.men");
  638.     while(done == 0)
  639.     {
  640.         show_cursor();
  641.         switch(i)
  642.         {
  643.             case 0 : pick = edit_string(data_string[0],
  644.                     "****************************",13,2,"TAP");
  645.                  break;
  646.             case 1 : pick = edit_string(data_string[1],
  647.                     "****************************",13,4,"TAP");
  648.                  break;
  649.             case 2 : pick = edit_string(data_string[2],
  650.                     "****************************",13,5,"TAP");
  651.                  break;
  652.             case 3 : pick = edit_string(data_string[3],
  653.                     "****************************",13,6,"TAP");
  654.                  break;
  655.             case 4 : pick = edit_string(data_string[4],
  656.                     "############",13,9,"TAP");
  657.                  break;
  658.             case 5 : pick = edit_string(data_string[5],
  659.                     "****************",20,10,"TAP");
  660.                  break;
  661.         }
  662.         switch(pick)
  663.         {
  664.             case ESC : done = 1; break;
  665.             case CURSOR_UP : i = i - 1; break;
  666.             case CURSOR_DN : i = i + 1; break;
  667.             case 0 : i = i + 1; break;
  668.         }
  669.         if(i == 6)
  670.         {
  671.             if((done = data_ok()) == 0)
  672.             {
  673.                 i = 0;
  674.             }
  675.         }
  676.     }
  677.     clear_window(0);
  678.     load_text(29,"fultut.men");
  679.     done = 0;
  680.     i = 0;
  681.     while(done == 0)
  682.     {
  683.         show_cursor();
  684.         get_int(&data_quant[i],2,34,i + 5);
  685.         switch(i)
  686.         {
  687.             case 5 : price[5] = data_quant[5] * 100.00; break;
  688.             default : price[i] = data_quant[i] * 25.00; break;
  689.         }
  690.         i++;
  691.         if(i == 6)
  692.         {
  693.             total_quant = 0;
  694.             total_price = 0;
  695.                         sub_total_price = 0;
  696.             for(j = 0;j < 6;j++)
  697.             {
  698.                 write_window(51,5 + j,"%8.2f",price[j]);
  699.                 sub_total_price = price[j] + sub_total_price;
  700.                 total_quant = data_quant[j] + total_quant;
  701.                 total_s_h = total_quant * 3.00;
  702.                 if(total_s_h > 50.00)
  703.                 {
  704.                     total_s_h = 50.00;
  705.                 }
  706.                 total_price = sub_total_price + total_s_h;
  707.             }
  708.             write_window(34,12,"%-3d",total_quant);
  709.             write_window(51,12,"%8.2f",sub_total_price);
  710.             write_window(51,13,"%8.2f",total_s_h);
  711.             write_window(50,15,"%9.2f",total_price);
  712.             if((done = data_ok()) == 0)
  713.             {
  714.                 i = 0;
  715.             }
  716.         }
  717.     }
  718.     hide_cursor();
  719.     load_form(1,"fultut.prn");
  720.     print_printf(13,18,"%s",data_string[0]);
  721.     print_printf(13,20,"%s",data_string[1]);
  722.     print_printf(13,21,"%s",data_string[2]);
  723.     print_printf(13,22,"%s",data_string[3]);
  724.     print_printf(13,25,"%s",data_string[4]);
  725.     print_printf(21,27,"%s",data_string[5]);
  726.     for(i = 0;i < 6;i++)
  727.     {
  728.         print_printf(36,36 + i,"%2d",data_quant[i]);
  729.         print_printf(53,36 + i,"%8.2f",price[i]);
  730.     }
  731.     print_printf(36,43,"%-4d",total_quant);
  732.     print_printf(53,43,"%8.2f",sub_total_price);
  733.     print_printf(53,44,"%8.2f",total_s_h);
  734.     print_printf(52,46,"%9.2f",total_price);
  735.     call_window(PRINT_WIN);
  736.     if(print_char(0x0c) != 0)
  737.     {
  738.         clear_window(0);
  739.         write_window(4,2,"Printer error !");
  740.         bioskey(0);
  741.         uncall_window(PRINT_WIN);
  742.         uncall_window(TEXT_WIN);
  743.         return(0);
  744.     }
  745.     write_window(4,2,"Align Paper Now !");
  746.     write_window(5,3,"HIT ANY KEY");
  747.     bioskey(0);
  748.     clear_window(0);
  749.     write_window(8,2,"PRINTING!");
  750.     if(print_buff() != 0)
  751.     {
  752.         clear_window(0);
  753.         write_window(4,2,"Printer error !");
  754.         bioskey(0);
  755.     }
  756.     uncall_window(PRINT_WIN);
  757.     uncall_window(TEXT_WIN);
  758.     display_switch = 0;
  759.     return(0);
  760. }
  761.  
  762. int function_menu(void)
  763. {
  764.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  765.     char lable[4][13] = {"Simple libs","Font libs","VGA libs","Mouse libs"};
  766.  
  767.     if(display_switch)
  768.     {
  769.         load_screen(3);
  770.         call_window(FUNCTION_MENU_WIN);
  771.         call_menu(FUNCTION_MENU_MENU,3,2);
  772.         save_screen(4);
  773.     }
  774.     else
  775.     {
  776.         load_screen(4);
  777.     }
  778.     display_switch = 1;
  779.     textcolor(4);
  780.     write_window(3,2,"S");
  781.     write_window(3,3,"F");
  782.     write_window(3,4,"V");
  783.     write_window(3,5,"M");
  784.     save_screen_buff();
  785.     i = 0;
  786.     moushow();
  787.     for(;;)
  788.     {
  789.         choice = 0;
  790.         if(mouposition(&mousex,&mousey))
  791.         {
  792.             if((mousex > 21) & (mousex < 35))
  793.             {
  794.                 i = mousey - 6;
  795.             }
  796.         }
  797.         if(i < 0)
  798.         {
  799.             i = 0;
  800.         }
  801.         if(i > 3)
  802.         {
  803.             i = 3;
  804.         }
  805.         if(old_i != i)
  806.         {
  807.             old_i = i;
  808.             mouhide();
  809.             load_screen_buff();
  810.             simp_window(22,6 + i,34,6 + i,0,2,4,3,1,5,0,0,0);
  811.             write_window(2,1,"%s",lable[i]);
  812.             moushow();
  813.         }
  814.         if(bioskey(1) | (mou_switch == 0))
  815.         {
  816.             switch(bioskey(0))
  817.             {
  818.                 case ESC : choice = 9; break;
  819.                 case CURSOR_DN : i = i + 1; break;
  820.                 case CURSOR_UP : i = i - 1; break;
  821.                 case ENTER : choice = 1; break;
  822.                 case ALT_S : choice = 2; break;
  823.                 case ALT_F : choice = 3; break;
  824.                 case ALT_V : choice = 4; break;
  825.                 case ALT_M : choice = 5; break;
  826.             }
  827.         }
  828.         if(moubuttonpressed(LEFTBUTTON))
  829.         {
  830.             if((mousex > 21) & (mousex < 35) & (mousey > 5) & (mousey < 10))
  831.             {
  832.                 choice = 1;
  833.             }
  834.             else
  835.             {
  836.                 choice = 9;
  837.             }
  838.         }
  839.         if(choice != 0)
  840.         {
  841.             break;
  842.         }
  843.     }
  844.     mouhide();
  845.     load_screen_buff();
  846.     pick = 1;
  847.     if(choice == 1)
  848.     {
  849.         choice = i + 2;
  850.     }
  851.     switch(choice)
  852.     {
  853.         case 2 : simp_libs_menu(); break;
  854.         case 3 : font_libs_menu(); break;
  855.         case 4 : vga_libs_menu(); break;
  856.         case 5 : mouse_libs_menu(); break;
  857.         case 9 : pick = 0; break;
  858.     }
  859.     display_switch = 0;
  860.     return(pick);
  861. }
  862.  
  863. int simp_libs_menu(void)
  864. {
  865.     int pick,choice,i,j,old_i = 100,old_j = 4;
  866.     int mousex = 0,mousey = 0;
  867.         char lable[3][21][25] = {"simp_window\(\)","popup_window\(\)","make_window\(\)","call_window\(\)",
  868.         "uncall_window\(\)","unpopup_window\(\)","load_win_data\(\)","","",
  869.         "make_menu\(\)","load_menu_text\(\)","call_menu\(\)","load_text\(\)","","",
  870.         "get_choice\(\)","get_int_date\(\)","edit_string\(\)","get_string\(\)",
  871.         "get_int\(\)","get_long\(\)","print_printf\(\)","print_putch\(\)",
  872.         "print_horizontal_line\(\)","print_vertical_line\(\)","print_window\(\)",
  873.         "clear_print_buff\(\)","print_buff\(\)","load_form\(\)","print_char\(\)","","",
  874.         "draw_horizontal_line\(\)","draw_vertical_line\(\)","clear_window\(\)",
  875.         "move_window\(\)","show_cursor\(\)","hide_cursor\(\)","move_cursor\(\)",
  876.         "load_screen_form\(\)","write_window\(\)","read_text\(\)","set_tempo\(\)",
  877.         "tone\(\)","cord\(\)","playsong\(\)","","","read_file\(\)",
  878.         "write_file\(\)","file_to_file\(\)","copy_file\(\)","creat_file\(\)","read_directory\(\)",
  879.         "","","save_screen\(\)","load_screen\(\)","save_screen_buff\(\)",
  880.         "load_screen_buff\(\)","","init_window\(\)","uninit_window\(\)"};
  881.  
  882.     if(display_switch)
  883.     {
  884.         call_window(SIMPLE_LIBS_WIN);
  885.         call_menu(SIMPLE_LIBS_MENU,5,3);
  886.         write_window((80 - strlen("FUNCTION MENU ")) / 2,1," FUNGTION MENU ");
  887.         write_window((80 - strlen(" ESC to exit ")) / 2,25," ESC to exit ");
  888.         save_screen(5);
  889.     }
  890.     else
  891.     {
  892.         load_screen(5);
  893.     }
  894.     save_screen_buff();
  895.     i = 0;
  896.     j = 0;
  897.     moushow();
  898.     for(;;)
  899.     {
  900.         choice = 0;
  901.         if(mouposition(&mousex,&mousey))
  902.         {
  903.             if((mousex > 3) & (mousex < 25))
  904.             {
  905.                 i = mousey - 4;
  906.                 if((mousey > 2) & (mousey < 23))
  907.                 {
  908.                     j = 0;
  909.                 }
  910.             }
  911.             else if((mousex > 27) & (mousex < 56))
  912.             {
  913.                 i = mousey - 4;
  914.                 if((mousey > 3) & (mousey < 23))
  915.                 {
  916.                     j = 1;
  917.                 }
  918.             }
  919.             else if((mousex > 58) & (mousex < 80))
  920.             {
  921.                 i = mousey - 4;
  922.                 if((mousey > 3) & (mousey < 25))
  923.                 {
  924.                     j = 2;
  925.                 }
  926.             }
  927.  
  928.         }
  929.         if(bioskey(1) | (mou_switch == 0))
  930.         {
  931.             switch(bioskey(0))
  932.             {
  933.                 case ESC : choice = 100; break;
  934.                 case ENTER : choice = 1; break;
  935.                 case CURSOR_UP : i = i - 1; break;
  936.                 case CURSOR_DN : i = i + 1; break;
  937.                 case CURSOR_RIGHT : j = j + 1; break;
  938.                 case CURSOR_LEFT : j = j - 1; break;
  939.             }
  940.         }
  941.         switch(j)
  942.         {
  943.             case 0 : switch(i)
  944.                  {
  945.                     case 7 : i = 9; break;
  946.                     case 8 : i = 6; break;
  947.                     case 13 : i = 15; break;
  948.                     case 14 : i = 12; break;
  949.                  }
  950.                  if(i < 0)
  951.                  {
  952.                     i = 0;
  953.                  }
  954.                  if(i > 20)
  955.                  {
  956.                     i = 0;
  957.                     j = 1;
  958.                  }
  959.                  break;
  960.             case 1 : switch(i)
  961.                  {
  962.                     case 9 : i = 11; break;
  963.                     case 10 : i = 8; break;
  964.                  }
  965.                  if(i < 0)
  966.                  {
  967.                     i = 20;
  968.                     j = 0;
  969.                  }
  970.                  else if(i > 20)
  971.                  {
  972.                     i = 0;
  973.                     j = 2;
  974.                  }
  975.                  break;
  976.             case 2 : switch(i)
  977.                  {
  978.                     case 4 : i = 6; break;
  979.                     case 5 : i = 3; break;
  980.                     case 12 : i = 14; break;
  981.                     case 13 : i = 11; break;
  982.                  }
  983.                  if((old_i < i) & (i == 18))
  984.                  {
  985.                     i = 19;
  986.                  }
  987.                  if((old_i > i) & (i == 18))
  988.                  {
  989.                     i = 17;
  990.                  }
  991.                  if(i < 0)
  992.                  {
  993.                     i = 20;
  994.                     j = 1;
  995.                  }
  996.                  else if(i > 20)
  997.                  {
  998.                     i = 20;
  999.                  }
  1000.                  break;
  1001.         }
  1002.         if(j < 0)
  1003.         {
  1004.             j = 0;
  1005.         }
  1006.         if(j > 2)
  1007.         {
  1008.             j = 2;
  1009.         }
  1010.         if((old_i != i) | (old_j != j))
  1011.         {
  1012.             mouhide();
  1013.             old_i = i;
  1014.             old_j = j;
  1015.             load_screen_buff();
  1016.             switch(j)
  1017.             {
  1018.                 case 0 : simp_window(4,4 + i,4 + strlen(lable[j][i]) + 1,4 + i,0,2,4,3,1,5,0,0,0); break;
  1019.                 case 1 : simp_window(28,4 + i,28 + strlen(lable[j][i]) + 1,4 + i,0,2,4,3,1,5,0,0,0); break;
  1020.                 case 2 : simp_window(59,4 + i,59 + strlen(lable[j][i]) + 1,4 + i,0,2,4,3,1,5,0,0,0); break;
  1021.             }
  1022.             write_window(2,1,"%s",lable[j][i]);
  1023.             moushow();
  1024.         }
  1025.         if(moubuttonrelease(LEFTBUTTON))
  1026.         {
  1027.             if(((mousex > 3) & (mousex < strlen(lable[0][i]) + 5)) |
  1028.                 ((mousex > 27) & (mousex < strlen(lable[1][i]) + 31)) |
  1029.                 ((mousex > 58) & (mousex < strlen(lable[2][i]) + 62)))
  1030.             {
  1031.                 choice = 1;
  1032.             }
  1033.         }
  1034.         if(choice != 0)
  1035.         {
  1036.             break;
  1037.         }
  1038.     }
  1039.     mouhide();
  1040.     load_screen_buff();
  1041.     pick = 1;
  1042.     if(choice == 1)
  1043.     {
  1044.         switch(j)
  1045.         {
  1046.             case 0 : switch(i)
  1047.                  {
  1048.                     case 0 : choice = 0; break;
  1049.                     case 1 : choice = 1; break;
  1050.                     case 2 : choice = 2; break;
  1051.                     case 3 : choice = 3; break;
  1052.                     case 4 : choice = 4; break;
  1053.                     case 5 : choice = 5; break;
  1054.                     case 6 : choice = 6; break;
  1055.                     case 9 : choice = 7; break;
  1056.                     case 10 : choice = 8; break;
  1057.                     case 11 : choice = 9; break;
  1058.                     case 12 : choice = 10; break;
  1059.                     case 15 : choice = 11; break;
  1060.                     case 16 : choice = 12; break;
  1061.                     case 17 : choice = 13; break;
  1062.                     case 18 : choice = 15; break;
  1063.                     case 19 : choice = 16; break;
  1064.                     case 20 : choice = 17; break;
  1065.                  }
  1066.                  break;
  1067.             case 1 : switch(i)
  1068.                  {
  1069.                     case 0 : choice = 18; break;
  1070.                     case 1 : choice = 19; break;
  1071.                     case 2 : choice = 20; break;
  1072.                     case 3 : choice = 21; break;
  1073.                     case 4 : choice = 22; break;
  1074.                     case 5 : choice = 23; break;
  1075.                     case 6 : choice = 24; break;
  1076.                     case 7 : choice = 25; break;
  1077.                     case 8 : choice = 52; break;
  1078.                     case 11 : choice = 26; break;
  1079.                     case 12 : choice = 27; break;
  1080.                     case 13 : choice = 28; break;
  1081.                     case 14 : choice = 29; break;
  1082.                     case 15 : choice = 30; break;
  1083.                     case 16 : choice = 31; break;
  1084.                     case 17 : choice = 32; break;
  1085.                     case 18 : choice = 33; break;
  1086.                     case 19 : choice = 34; break;
  1087.                     case 20 : choice = 35; break;
  1088.                  }
  1089.                  break;
  1090.             case 2 : switch(i)
  1091.                  {
  1092.                     case 0 : choice = 36; break;
  1093.                     case 1 : choice = 37; break;
  1094.                     case 2 : choice = 38; break;
  1095.                     case 3 : choice = 39; break;
  1096.                     case 6 : choice = 40; break;
  1097.                     case 7 : choice = 41; break;
  1098.                     case 8 : choice = 42; break;
  1099.                     case 9 : choice = 43; break;
  1100.                     case 10 : choice = 44; break;
  1101.                     case 11 : choice = 45; break;
  1102.                     case 14 : choice = 46; break;
  1103.                     case 15 : choice = 47; break;
  1104.                     case 16 : choice = 48; break;
  1105.                     case 17 : choice = 49; break;
  1106.                     case 19 : choice = 50; break;
  1107.                     case 20 : choice = 51; break;
  1108.                  }
  1109.         }
  1110.         view_tut(choice,lable[j][i]);
  1111.         switch(choice)
  1112.         {
  1113.             case 13 : view_tut(14,lable[j][i]); break;
  1114.         }
  1115.     }
  1116.     pick = 1;
  1117.     if(choice == 100)
  1118.     {
  1119.         pick = 0;
  1120.     }
  1121.     display_switch = 0;
  1122.     return(pick);
  1123. }
  1124.  
  1125.  
  1126. int font_libs_menu(void)
  1127. {
  1128.     int pick,choice,i = 0,old_i = 12,mousex = 0,mousey = 0;
  1129.     char lable[15][29] = {"load_font\(\)","enable_dual_font\(\)","write_win_bank\(\)",
  1130.                 "write_win_multi\(\)","load_emulate\(\)","write_win_large\(\)",
  1131.                 "write_win_multi_large\(\)","set_palette\(\)","font_get_adapter\(\)",
  1132.                 "toggle_blink\(\)","toggle_intensity\(\)","enable_reset\(\)",
  1133.                 "init_multi_font\(\)","uninit_multi_font\(\)","load_multi_pal\(\)"};
  1134.  
  1135.     if(display_switch)
  1136.     {
  1137.         load_screen(4);
  1138.         call_window(FONT_LIBS_WIN);
  1139.         call_menu(FONT_LIBS_MENU,3,2);
  1140.         save_screen(5);
  1141.     }
  1142.     else
  1143.     {
  1144.         load_screen(5);
  1145.     }
  1146.     display_switch = 1;
  1147.     save_screen_buff();
  1148.     moushow();
  1149.     i = 0;
  1150.     for(;;)
  1151.     {
  1152.         choice = 0;
  1153.         if(mouposition(&mousex,&mousey))
  1154.         {
  1155.             if((mousex > 22) & (mousex < 48))
  1156.             {
  1157.                 i = mousey - 7;
  1158.             }
  1159.         }
  1160.         if(i < 0)
  1161.         {
  1162.             i = 0;
  1163.         }
  1164.         if(i > 14)
  1165.         {
  1166.             i = 14;
  1167.         }
  1168.         if(old_i != i)
  1169.         {
  1170.             old_i = i;
  1171.             mouhide();
  1172.             load_screen_buff();
  1173.             simp_window(23,7 + i,47,7 + i,0,2,4,3,1,5,0,0,0);
  1174.             write_window(2,1,"%s",lable[i]);
  1175.             moushow();
  1176.         }
  1177.         if(bioskey(1) | (mou_switch == 0))
  1178.         {
  1179.             switch(bioskey(0))
  1180.             {
  1181.                 case ESC : choice = 12; break;
  1182.                 case CURSOR_DN : i = i + 1; break;
  1183.                 case CURSOR_UP : i = i - 1; break;
  1184.                 case ENTER: choice = 1; break;
  1185.             }
  1186.         }
  1187.         if(moubuttonpressed(LEFTBUTTON))
  1188.         {
  1189.             if((mousex > 22) & (mousex < 48) & (mousey > 6) & (mousey < 22))
  1190.             {
  1191.                 choice = 1;
  1192.             }
  1193.             else
  1194.             {
  1195.                 choice = 12;
  1196.             }
  1197.         }
  1198.         if(choice != 0)
  1199.         {
  1200.             break;
  1201.         }
  1202.     }
  1203.     mouhide();
  1204.     load_screen_buff();
  1205.     pick = 1;
  1206.     if(choice == 1)
  1207.     {
  1208.         file_text("fulfunc2.men",i);
  1209.     }
  1210.     else
  1211.     {
  1212.         if(choice == 12)
  1213.         {
  1214.             pick = 0;
  1215.         }
  1216.     }
  1217.     display_switch = 0;
  1218.     return(pick);
  1219. }
  1220.  
  1221.  
  1222. int vga_libs_menu(void)
  1223. {
  1224.     int pick,choice,i = 0,old_i = 12,mousex = 0,mousey = 0;
  1225.     char lable[14][29] = {"save_color_regs\(\)","load_color_regs\(\)","read_color_reg\(\)",
  1226.                 "write_color_reg\(\)","save_palette\(\)","load_palette\(\)",
  1227.                 "write_palette\(\)","read_palette\(\)","vag_get_adapter\(\)",
  1228.                 "gray_color_reg\(\)","gray_color_regs\(\)","enable_reset\(\)",
  1229.                 "init_vgaedit\(\)","uninit_vgaedit\(\)"};
  1230.  
  1231.     if(display_switch)
  1232.     {
  1233.         load_screen(4);
  1234.         call_window(VGA_LIBS_WIN);
  1235.         call_menu(VGA_LIBS_MENU,3,2);
  1236.         save_screen(5);
  1237.     }
  1238.     else
  1239.     {
  1240.         load_screen(5);
  1241.     }
  1242.     display_switch = 1;
  1243.     save_screen_buff();
  1244.     moushow();
  1245.     i = 0;
  1246.     for(;;)
  1247.     {
  1248.         choice = 0;
  1249.         if(mouposition(&mousex,&mousey))
  1250.         {
  1251.             if((mousex > 22) & (mousex < 43))
  1252.             {
  1253.                 i = mousey - 7;
  1254.             }
  1255.         }
  1256.         if(i < 0)
  1257.         {
  1258.             i = 0;
  1259.         }
  1260.         if(i > 13)
  1261.         {
  1262.             i = 13;
  1263.         }
  1264.         if(old_i != i)
  1265.         {
  1266.             old_i = i;
  1267.             mouhide();
  1268.             load_screen_buff();
  1269.             simp_window(23,7 + i,42,7 + i,0,2,4,3,1,8,0,0,0);
  1270.             write_window(2,1,"%s",lable[i]);
  1271.             moushow();
  1272.         }
  1273.         if(bioskey(1) | (mou_switch == 0))
  1274.         {
  1275.             switch(bioskey(0))
  1276.             {
  1277.                 case ESC : choice = 12; break;
  1278.                 case CURSOR_DN : i = i + 1; break;
  1279.                 case CURSOR_UP : i = i - 1; break;
  1280.                 case ENTER: choice = 1; break;
  1281.             }
  1282.         }
  1283.         if(moubuttonpressed(LEFTBUTTON))
  1284.         {
  1285.             if((mousex > 22) & (mousex < 43) & (mousey > 6) & (mousey < 21))
  1286.             {
  1287.                 choice = 1;
  1288.             }
  1289.             else
  1290.             {
  1291.                 choice = 12;
  1292.             }
  1293.         }
  1294.         if(choice != 0)
  1295.         {
  1296.             break;
  1297.         }
  1298.     }
  1299.     mouhide();
  1300.     load_screen_buff();
  1301.     pick = 1;
  1302.     if(choice == 1)
  1303.     {
  1304.         file_text("fulfunc2.men",i + 15);
  1305.     }
  1306.     else
  1307.     {
  1308.         if(choice == 12)
  1309.         {
  1310.             pick = 0;
  1311.         }
  1312.     }
  1313.     display_switch = 0;
  1314.     return(pick);
  1315. }
  1316.  
  1317. int mouse_libs_menu(void)
  1318. {
  1319.     int pick,choice,i = 0,old_i = 12,mousex = 0,mousey = 0;
  1320.     char lable[15][29] = {"mouinstalled\(\)","moureset\(\)","moubuttonpressed\(\)",
  1321.                 "moushow\(\)","mouhide\(\)","moucursortype\(\)",
  1322.                 "mousetposition\(\)","mousetmaxposition\(\)",
  1323.                 "moubuttonrelease\(\)","loadcurs\(\)","mou_get_adapter\(\)",
  1324.                 "mouinit\(\)","mouuninit\(\)","mouposition\(\)",
  1325.                 "moupositionpix\(\)"};
  1326.  
  1327.     if(display_switch)
  1328.     {
  1329.         load_screen(4);
  1330.         call_window(MOUSE_LIBS_WIN);
  1331.         call_menu(MOUSE_LIBS_MENU,3,2);
  1332.         save_screen(5);
  1333.     }
  1334.     else
  1335.     {
  1336.         load_screen(5);
  1337.     }
  1338.     display_switch = 1;
  1339.     save_screen_buff();
  1340.     moushow();
  1341.     i = 0;
  1342.     for(;;)
  1343.     {
  1344.         choice = 0;
  1345.         if(mouposition(&mousex,&mousey))
  1346.         {
  1347.             if((mousex > 22) & (mousex < 44))
  1348.             {
  1349.                 i = mousey - 7;
  1350.             }
  1351.         }
  1352.         if(bioskey(1) | (mou_switch == 0))
  1353.         {
  1354.             switch(bioskey(0))
  1355.             {
  1356.                 case ESC : choice = 12; break;
  1357.                 case CURSOR_DN : i = i + 1; break;
  1358.                 case CURSOR_UP : i = i - 1; break;
  1359.                 case ENTER: choice = 1; break;
  1360.             }
  1361.         }
  1362.         if(i < 0)
  1363.         {
  1364.             i = 0;
  1365.         }
  1366.         if(i > 14)
  1367.         {
  1368.             i = 14;
  1369.         }
  1370.         if(old_i != i)
  1371.         {
  1372.             old_i = i;
  1373.             mouhide();
  1374.             load_screen_buff();
  1375.             simp_window(23,7 + i,43,7 + i,0,2,4,3,1,5,0,0,0);
  1376.             write_window(2,1,"%s",lable[i]);
  1377.             moushow();
  1378.         }
  1379.         if(moubuttonpressed(LEFTBUTTON))
  1380.         {
  1381.             if((mousex > 22) & (mousex < 44) & (mousey > 6) & (mousey < 22))
  1382.             {
  1383.                 choice = 1;
  1384.             }
  1385.             else
  1386.             {
  1387.                 choice = 12;
  1388.             }
  1389.         }
  1390.         if(choice != 0)
  1391.         {
  1392.             break;
  1393.         }
  1394.     }
  1395.     mouhide();
  1396.     load_screen_buff();
  1397.     pick = 1;
  1398.     if(choice == 1)
  1399.     {
  1400.         file_text("fulfunc2.men",i + 29);
  1401.     }
  1402.     else
  1403.     {
  1404.         if(choice == 12)
  1405.         {
  1406.             pick = 0;
  1407.         }
  1408.     }
  1409.     display_switch = 0;
  1410.     return(pick);
  1411. }
  1412.  
  1413. int execute_menu(void)
  1414. {
  1415.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  1416.     char lable[2][13] = {"Font exec","VGA exec"};
  1417.  
  1418.     if(display_switch)
  1419.     {
  1420.         load_screen(3);
  1421.         call_window(EXEC_MENU_WIN);
  1422.         call_menu(EXEC_MENU_MENU,3,2);
  1423.         save_screen(4);
  1424.     }
  1425.     else
  1426.     {
  1427.         load_screen(4);
  1428.     }
  1429.     display_switch = 1;
  1430.     textcolor(4);
  1431.     write_window(3,2,"F");
  1432.     write_window(3,3,"V");
  1433.     save_screen_buff();
  1434.     i = 0;
  1435.     moushow();
  1436.     for(;;)
  1437.     {
  1438.         choice = 0;
  1439.         if(mouposition(&mousex,&mousey))
  1440.         {
  1441.             if((mousex > 21) & (mousex < 33))
  1442.             {
  1443.                 i = mousey - 6;
  1444.             }
  1445.         }
  1446.         if(i < 0)
  1447.         {
  1448.             i = 0;
  1449.         }
  1450.         if(i > 1)
  1451.         {
  1452.             i = 1;
  1453.         }
  1454.         if(old_i != i)
  1455.         {
  1456.             old_i = i;
  1457.             mouhide();
  1458.             load_screen_buff();
  1459.             simp_window(22,6 + i,32,6 + i,0,2,4,3,1,5,0,0,0);
  1460.             write_window(2,1,"%s",lable[i]);
  1461.             moushow();
  1462.         }
  1463.         if(bioskey(1) | (mou_switch == 0))
  1464.         {
  1465.             switch(bioskey(0))
  1466.             {
  1467.                 case ESC : choice = 9; break;
  1468.                 case CURSOR_DN : i = i + 1; break;
  1469.                 case CURSOR_UP : i = i - 1; break;
  1470.                 case ENTER : choice = 1; break;
  1471.                 case ALT_F : choice = 2; break;
  1472.                 case ALT_V : choice = 3; break;
  1473.             }
  1474.         }
  1475.         if(moubuttonpressed(LEFTBUTTON))
  1476.         {
  1477.             if((mousex > 21) & (mousex < 33) & (mousey > 5) & (mousey < 8))
  1478.             {
  1479.                 choice = 1;
  1480.             }
  1481.             else
  1482.             {
  1483.                 choice = 9;
  1484.             }
  1485.         }
  1486.         if(choice != 0)
  1487.         {
  1488.             break;
  1489.         }
  1490.     }
  1491.     mouhide();
  1492.     load_screen_buff();
  1493.     pick = 1;
  1494.     if(choice == 1)
  1495.     {
  1496.         choice = i + 2;
  1497.     }
  1498.     switch(choice)
  1499.     {
  1500.         case 2 : font_exec_menu(); break;
  1501.         case 3 : vga_exec_menu(); break;
  1502.         case 9 : pick = 0; break;
  1503.     }
  1504.     display_switch = 0;
  1505.     return(pick);
  1506. }
  1507.  
  1508.  
  1509. int font_exec_menu(void)
  1510. {
  1511.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  1512.     char lable[5][29] = {"loadfont.exe","dualon.exe","setpal.exe","makefont.exe","resetpal.exe"};
  1513.  
  1514.     if(display_switch)
  1515.     {
  1516.         load_screen(4);
  1517.         call_window(FONT_EXEC_WIN);
  1518.         call_menu(FONT_EXEC_MENU,3,2);
  1519.         save_screen(5);
  1520.     }
  1521.     else
  1522.     {
  1523.         load_screen(5);
  1524.     }
  1525.     display_switch = 1;
  1526.     save_screen_buff();
  1527.     i = 0;
  1528.     moushow();
  1529.     for(;;)
  1530.     {
  1531.         choice = 0;
  1532.         if(mouposition(&mousex,&mousey))
  1533.         {
  1534.             if((mousex > 22) & (mousex < 37))
  1535.             {
  1536.                 i = mousey - 7;
  1537.             }
  1538.         }
  1539.         if(i < 0)
  1540.         {
  1541.             i = 0;
  1542.         }
  1543.         if(i > 4)
  1544.         {
  1545.             i = 4;
  1546.         }
  1547.         if(old_i != i)
  1548.         {
  1549.             old_i = i;
  1550.             mouhide();
  1551.             load_screen_buff();
  1552.             simp_window(23,7 + i,36,7 + i,0,2,4,3,1,5,0,0,0);
  1553.             write_window(2,1,"%s",lable[i]);
  1554.             moushow();
  1555.         }
  1556.         if(bioskey(1) | (mou_switch == 0))
  1557.         {
  1558.             switch(bioskey(0))
  1559.             {
  1560.                 case ESC : choice = 9; break;
  1561.                 case CURSOR_DN : i = i + 1; break;
  1562.                 case CURSOR_UP : i = i - 1; break;
  1563.                 case ENTER: choice = 1; break;
  1564.             }
  1565.         }
  1566.         if(moubuttonpressed(LEFTBUTTON))
  1567.         {
  1568.             if((mousex > 22) & (mousex < 37) & (mousey > 6) & (mousey < 12))
  1569.             {
  1570.                 choice = 1;
  1571.             }
  1572.             else
  1573.             {
  1574.                 choice = 9;
  1575.             }
  1576.         }
  1577.         if(choice != 0)
  1578.         {
  1579.             break;
  1580.         }
  1581.     }
  1582.     mouhide();
  1583.     load_screen_buff();
  1584.     pick = 1;
  1585.     if(choice == 1)
  1586.     {
  1587.         file_text("fulfunc2.men",i + 44);
  1588.     }
  1589.     else
  1590.     {
  1591.         if(choice == 9)
  1592.         {
  1593.             pick = 0;
  1594.         }
  1595.     }
  1596.     display_switch = 0;
  1597.     return(pick);
  1598. }
  1599.  
  1600.  
  1601. int vga_exec_menu(void)
  1602. {
  1603.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  1604.     char lable[5][29] = {"savedac.exe","loaddac.exe","savepal.exe","loadpal.exe",
  1605.                  "resetpal.exe"};
  1606.  
  1607.     if(display_switch)
  1608.     {
  1609.         load_screen(4);
  1610.         call_window(VGA_EXEC_WIN);
  1611.         call_menu(VGA_EXEC_MENU,3,2);
  1612.         save_screen(5);
  1613.     }
  1614.     else
  1615.     {
  1616.         load_screen(5);
  1617.     }
  1618.     display_switch = 1;
  1619.     save_screen_buff();
  1620.     i = 0;
  1621.     moushow();
  1622.     for(;;)
  1623.     {
  1624.         choice = 0;
  1625.         if(mouposition(&mousex,&mousey))
  1626.         {
  1627.             if((mousex > 22) & (mousex < 37))
  1628.             {
  1629.                 i = mousey - 7;
  1630.             }
  1631.         }
  1632.         if(i < 0)
  1633.         {
  1634.             i = 0;
  1635.         }
  1636.         if(i > 4)
  1637.         {
  1638.             i = 4;
  1639.         }
  1640.         if(old_i != i)
  1641.         {
  1642.             old_i = i;
  1643.             mouhide();
  1644.             load_screen_buff();
  1645.             simp_window(23,7 + i,36,7 + i,0,2,4,3,1,5,0,0,0);
  1646.             write_window(2,1,"%s",lable[i]);
  1647.             moushow();
  1648.         }
  1649.         if(bioskey(1) | (mou_switch == 0))
  1650.         {
  1651.             switch(bioskey(0))
  1652.             {
  1653.                 case ESC : choice = 9; break;
  1654.                 case CURSOR_DN : i = i + 1; break;
  1655.                 case CURSOR_UP : i = i - 1; break;
  1656.                 case ENTER: choice = 1; break;
  1657.             }
  1658.         }
  1659.         if(moubuttonpressed(LEFTBUTTON))
  1660.         {
  1661.             if((mousex > 22) & (mousex < 37) & (mousey > 6) & (mousey < 12))
  1662.             {
  1663.                 choice = 1;
  1664.             }
  1665.             else
  1666.             {
  1667.                 choice = 9;
  1668.             }
  1669.         }
  1670.         if(choice != 0)
  1671.         {
  1672.             break;
  1673.         }
  1674.     }
  1675.     mouhide();
  1676.     load_screen_buff();
  1677.     pick = 1;
  1678.     if(choice == 1)
  1679.     {
  1680.         file_text("fulfunc2.men",i + 49);
  1681.     }
  1682.     else
  1683.     {
  1684.         if(choice == 9)
  1685.         {
  1686.             pick = 0;
  1687.         }
  1688.     }
  1689.     display_switch = 0;
  1690.     return(pick);
  1691. }
  1692.  
  1693.  
  1694. int text_screen(int file_num)
  1695. {
  1696.     call_window(TEXT_DEMO_WIN);
  1697.     load_text(file_num,"fultut.men");
  1698.     write_window((61 - strlen(" HIT ANY KEY ")) / 2,18," HIT ANY KEY ");
  1699.     bioskey(0);
  1700.     uncall_window(TEXT_DEMO_WIN);
  1701.     return(0);
  1702. }
  1703.  
  1704. int file_text(char *file_name,int file_num)
  1705. {
  1706.     call_window(TEXT_WIN);
  1707.     load_text(file_num,file_name);
  1708.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  1709.     bioskey(0);
  1710.     uncall_window(TEXT_WIN);
  1711.     return(0);
  1712. }
  1713.  
  1714. int file_screen(char *file_name)
  1715. {
  1716.     call_window(TEXT_WIN);
  1717.     write_window((80 - strlen(" PgUp/PgDn ESC ")) / 2,25," PgUp/PgDn ESC ");
  1718.     read_text(file_name,1);
  1719.     uncall_window(TEXT_WIN);
  1720.     return(0);
  1721. }
  1722.  
  1723. int simp_demo_menu(void)
  1724. {
  1725.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  1726.     char lable[6][13] = {"Capacity","Shadow","Boarder","Forms",
  1727.         "Music","Enteries"};
  1728.  
  1729.     if(display_switch)
  1730.     {
  1731.         load_screen(3);
  1732.         call_window(SIMPLE_DEMO_WIN);
  1733.         call_menu(SIMPLE_DEMO_MENU,3,2);
  1734.         save_screen(4);
  1735.     }
  1736.     else
  1737.     {
  1738.         load_screen(4);
  1739.     }
  1740.     display_switch = 1;
  1741.     textcolor(4);
  1742.     write_window(3,2,"C");
  1743.     write_window(3,3,"S");
  1744.     write_window(3,4,"B");
  1745.     write_window(3,5,"F");
  1746.     write_window(3,6,"M");
  1747.     write_window(3,7,"E");
  1748.     save_screen_buff();
  1749.     i = 0;
  1750.     moushow();
  1751.     for(;;)
  1752.     {
  1753.         choice = 0;
  1754.         if(mouposition(&mousex,&mousey))
  1755.         {
  1756.             if((mousex > 7) & (mousex < 18))
  1757.             {
  1758.                 i = mousey - 6;
  1759.             }
  1760.         }
  1761.         if(bioskey(1) | (mou_switch == 0))
  1762.         {
  1763.             switch(bioskey(0))
  1764.             {
  1765.                 case ESC : choice = 9; break;
  1766.                 case CURSOR_DN : i = i + 1; break;
  1767.                 case CURSOR_UP : i = i - 1; break;
  1768.                 case ENTER : choice = 1; break;
  1769.                 case ALT_C : choice = 2; break;
  1770.                 case ALT_S : choice = 3; break;
  1771.                 case ALT_B : choice = 4; break;
  1772.                 case ALT_F : choice = 5; break;
  1773.                 case ALT_M : choice = 6; break;
  1774.                 case ALT_E : choice = 7; break;
  1775.             }
  1776.         }
  1777.         if(i < 0)
  1778.         {
  1779.             i = 0;
  1780.         }
  1781.         if(i > 5)
  1782.         {
  1783.             i = 5;
  1784.         }
  1785.         if(old_i != i)
  1786.         {
  1787.             old_i = i;
  1788.             mouhide();
  1789.             load_screen_buff();
  1790.             simp_window(8,6 + i,17,6 + i,0,2,4,3,1,5,0,0,0);
  1791.             write_window(2,1,"%s",lable[i]);
  1792.             moushow();
  1793.         }
  1794.         if(moubuttonpressed(LEFTBUTTON))
  1795.         {
  1796.             if((mousex > 7) & (mousex < 18) & (mousey > 5) & (mousey < 12))
  1797.             {
  1798.                 choice = 1;
  1799.             }
  1800.             else
  1801.             {
  1802.                 choice = 9;
  1803.             }
  1804.         }
  1805.         if(choice != 0)
  1806.         {
  1807.             break;
  1808.         }
  1809.     }
  1810.     mouhide();
  1811.     load_screen_buff();
  1812.     pick = 1;
  1813.     if(choice == 1)
  1814.     {
  1815.         choice = i + 2;
  1816.     }
  1817.     switch(choice)
  1818.     {
  1819.         case 2 : demo_popup(); break;
  1820.         case 3 : shad_demo(); break;
  1821.         case 4 : boarder_demo(); break;
  1822.         case 5 : scr_form(); break;
  1823.         case 6 : song_demo(); break;
  1824.         case 7 : enter_demo(); break;
  1825.         case 9 : pick = 0; break;
  1826.     }
  1827.     display_switch = 0;
  1828.     return(pick);
  1829. }
  1830.  
  1831. int demo_popup(void)
  1832. {
  1833.     long int free_space,block = 4056L,convert = 1L;
  1834.     struct dfree space;
  1835.     int i,x,y,fore,back,num_file,done = 0;
  1836.     unsigned int temp_num;
  1837.     int temp_disk;
  1838.  
  1839.     save_screen_buff();
  1840.     text_screen(14);
  1841. /*************************************************************************
  1842.  
  1843.     this code asks for a drive letter and selects that drive
  1844.     for the utilitie files checking to see if there is enough
  1845.     memory
  1846.  
  1847. *************************************************************************/
  1848.  
  1849.     call_window(TEXT_WIN);
  1850.     load_font("script.fnt",1);
  1851.     getdfree(disk[0] - 64,&space);
  1852.     free_space = (convert * space.df_avail * space.df_bsec * space.df_sclus);
  1853.     temp_num = (free_space / block) - 2;
  1854.     if(temp_num < 1)
  1855.     {
  1856.         call_window(ERROR_WIN);
  1857.         write_window(3,2,"Not enough disk space !");
  1858.         bioskey(0);
  1859.         unpopup_window(ERROR_WIN);
  1860.         return(1);
  1861.     }
  1862.     if(temp_num > 10000)
  1863.     {
  1864.         temp_num = 10000;
  1865.     }
  1866. /****************************************************************************/
  1867.     call_window(ENTER_WIN);
  1868.     write_window(3,2,"Enter number of popups:");
  1869.     num_file = temp_num;
  1870.     while(done == 0)
  1871.     {
  1872.         if(get_int(&num_file,5,27,2) == 1)
  1873.         {
  1874.             uncall_window(ENTER_WIN);
  1875.             return(0);
  1876.         }
  1877.         if(num_file < 0)
  1878.         {
  1879.             clear_window(0);
  1880.             write_window(3,2,"Can't do negitive windows !");
  1881.             bioskey(0);
  1882.             clear_window(0);
  1883.             write_window(3,2,"Enter number of popups:");
  1884.             num_file = temp_num;
  1885.         }
  1886.         else
  1887.         {
  1888.             if(num_file > temp_num)
  1889.             {
  1890.                 clear_window(0);
  1891.                 write_window(3,2,"To many popups !");
  1892.                 bioskey(0);
  1893.                 clear_window(0);
  1894.                 write_window(3,2,"Enter number of popups:");
  1895.                 num_file = temp_num;
  1896.             }
  1897.             else
  1898.             {
  1899.                 done = 1;
  1900.             }
  1901.         }
  1902.     }
  1903.     uncall_window(ENTER_WIN);
  1904.     temp_disk = getdisk();
  1905.     setdisk(disk[0] - 65);
  1906.     copy_file("win.dat","win.temp");
  1907.     setdisk(temp_disk);
  1908.     load_default_palette(0);
  1909.     for(i = 1;i < num_file;i++)
  1910.     {
  1911.         x = (random(69) + 3);
  1912.         y = (random(20) + 2);
  1913.         fore = random(16);
  1914.         back = random(8);
  1915.         popup_window(i,x,y,x + 7,y + 2,1,2,fore,back,1,8,0,0,0);
  1916.         write_window(3,2,"%d",i);
  1917.     }
  1918.     popup_window(i,35,10,42,12,1,2,14,4,1,8,0,0,0);
  1919.     write_window(3,2,"%d",i);
  1920.     done = 0;
  1921.     while(done == 0)
  1922.     {
  1923.         for(i = 500;i < 1000;i++)
  1924.         {
  1925.             sound(i);
  1926.             delay(5);
  1927.             if(bioskey(1))
  1928.             {
  1929.                 done = 1;
  1930.                 break;
  1931.             }
  1932.         }
  1933.         if(done == 1)
  1934.         {
  1935.             break;
  1936.         }
  1937.         for(i = 1000;i > 500;i--)
  1938.         {
  1939.             sound(i);
  1940.             delay(5);
  1941.             if(bioskey(1))
  1942.             {
  1943.                 done = 1;
  1944.                 break;
  1945.             }
  1946.         }
  1947.     }
  1948.     nosound();
  1949.     for(i = num_file; i > 0;i--)
  1950.     {
  1951.         unpopup_window(i);
  1952.     }
  1953.     setdisk(disk[0] - 65);
  1954.     copy_file("win.tem","win.dat");
  1955.     remove("win.tem");
  1956.     setdisk(temp_disk);
  1957.     display_switch = 0;
  1958.     load_emulate(1);
  1959.     load_default_palette(1);
  1960.     return(0);
  1961. }
  1962.  
  1963.  
  1964. int shad_demo(void)
  1965. {
  1966.     int fore,back,i;
  1967.  
  1968.     text_screen(15);
  1969.     load_default_palette(0);
  1970.     load_font("ibmstd.fnt",1);
  1971.     for(i = 0;i < 3;i++)
  1972.     {
  1973.         popup_window(24,20,10,63,15,2,i,14,2,1,8,0,0,0);
  1974.         switch(i)
  1975.         {
  1976.             case 0 : write_window(3,3,"This is the 0 or NO_SHADOW style."); break;
  1977.             case 1 : write_window(3,3,"This is the 1 or WIDE_SHADOW style"); break;
  1978.             case 2 : write_window(3,3,"This is the 2 or NARROW_SHADOW style"); break;
  1979.         }
  1980.         write_window(15,6," HIT ANY KEY ");
  1981.         bioskey(0);
  1982.         unpopup_window(24);
  1983.     }
  1984.     for(i = 1;i < 5;i++)
  1985.     {
  1986.         popup_window(24,20,10,63,15,2,1,14,2,i,8,0,0,0);
  1987.         switch(i)
  1988.         {
  1989.             case 1 : write_window(3,3,"This is the 1 or LOWER LEFT location"); break;
  1990.             case 2 : write_window(3,3,"This is the 2 or UPPER_LEFT location"); break;
  1991.             case 3 : write_window(3,3,"This is the 3 or LOWER_RIGHT location"); break;
  1992.             case 4 : write_window(3,3,"This is the 4 or UPPER_RIGHT location"); break;
  1993.         }
  1994.         write_window(15,6," HIT ANY KEY ");
  1995.         bioskey(0);
  1996.         unpopup_window(24);
  1997.     }
  1998.     for(;;)
  1999.     {
  2000.         fore = random(16);
  2001.         back = random(8);
  2002.         popup_window(24,20,10,63,15,2,2,14,2,1,fore,back,0,0);
  2003.         write_window(15,6," HIT ANY KEY ");
  2004.         write_window(6,3,"These are the diffrent colors that");
  2005.         write_window(11,4,"you can use for shadows.");
  2006.         delay(700);
  2007.         if(bioskey(1))
  2008.         {
  2009.             bioskey(0);
  2010.             unpopup_window(24);
  2011.             break;
  2012.         }
  2013.     }
  2014.     load_default_palette(1);
  2015.     load_emulate(1);
  2016.     display_switch = 0;
  2017.     return(0);
  2018. }
  2019.  
  2020. int boarder_demo(void)
  2021. {
  2022.     int i,char_boarder;
  2023.  
  2024.     text_screen(16);
  2025.     load_default_palette(0);
  2026.     load_font("ibmstd.fnt",1);
  2027.     for(i = 0;i <5;i++)
  2028.     {
  2029.         popup_window(24,20,10,60,15,i,2,14,2,1,8,0,0,0);
  2030.         switch(i)
  2031.         {
  2032.             case 0 : write_window(3,3,"This is the 0 or NO_BOARDER style."); break;
  2033.             case 1 : write_window(3,3,"This is the 1 or SINGLE_BOARDER style"); break;
  2034.             case 2 : write_window(3,3,"This is the 2 or DOUBLE_BOARDER style"); break;
  2035.             case 3 : write_window(3,3,"This is the 3 or SIG_DUB_BOARDER style"); break;
  2036.             case 4 : write_window(3,3,"This is the 4 or DUB_SIG_BOARDER style"); break;
  2037.         }
  2038.         write_window(15,6," HIT ANY KEY ");
  2039.         bioskey(0);
  2040.     }
  2041.     for(;;)
  2042.     {
  2043.         char_boarder = random(255);
  2044.         if(char_boarder < 15)
  2045.         {
  2046.             char_boarder = char_boarder + 15;
  2047.         }
  2048.         popup_window(24,20,10,60,15,5,2,14,2,1,8,0,char_boarder,0);
  2049.         write_window(15,3," HIT ANY KEY ");
  2050.         delay(700);
  2051.         if(bioskey(1))
  2052.         {
  2053.             bioskey(0);
  2054.             unpopup_window(24);
  2055.             break;
  2056.         }
  2057.     }
  2058.     load_default_palette(1);
  2059.     load_emulate(1);
  2060.     display_switch = 0;
  2061.     return(0);
  2062. }
  2063.  
  2064. int enter_demo(void)
  2065. {
  2066.     int int_data = 0,date[3] = {4,1,94},j,i,done = 0,pick;
  2067.     long int long_data = 0;
  2068.     char enter_string[30] = "";
  2069.  
  2070.     text_screen(17);
  2071.     creat_file("edit.tem");
  2072.     read_file(edit_buff,"edit.tem",(22 * 80),0L);
  2073.     load_font("ibmstd.fnt",1);
  2074.     show_cursor();
  2075.     for(i = 0;i < 5;i++)
  2076.     {
  2077.         call_window(ENTER_WIN);
  2078.         switch(i)
  2079.         {
  2080.             case 0 : write_window(3,2,"Enter Int :");
  2081.                  get_int(&int_data,4,16,2);
  2082.                  clear_window(0);
  2083.                  write_window(3,2,"You entered %d",int_data);
  2084.                  break;
  2085.             case 1 : write_window(3,2,"Enter Long :");
  2086.                  get_long(&long_data,8,17,2);
  2087.                  clear_window(0);
  2088.                  write_window(3,2,"You entered %ld",long_data);
  2089.                  break;
  2090.             case 2 : write_window(3,2,"Enter String :");
  2091.                  get_string(enter_string,"          --        ","**********  ********",18,2,1,0);
  2092.                  clear_window(0);
  2093.                  write_window(3,2,"You entered %s",enter_string);
  2094.                  break;
  2095.             case 3 : write_window(3,2,"Enter date :");
  2096.                  get_int_date(date,16,2);
  2097.                  clear_window(0);
  2098.                  write_window(3,2,"You enterd %d %d %d",date[0],date[1],date[2]);
  2099.                  break;
  2100.             case 4 : write_window(3,2,"Chose Y/N ?");
  2101.                  if(get_choice(15,2,"Y"))
  2102.                  {
  2103.                     clear_window(0);
  2104.                     write_window(3,2,"You choose YES");
  2105.                  }
  2106.                  else
  2107.                  {
  2108.                     clear_window(0);
  2109.                     write_window(3,2,"You coose NO");
  2110.                  }
  2111.                  break;
  2112.         }
  2113.         write_window(15,3," HIT ANY KEY ");
  2114.         bioskey(0);
  2115.         clear_window(0);
  2116.     }
  2117.     uncall_window(ENTER_WIN);
  2118.     text_screen(18);
  2119. /*************************************************************************
  2120.  
  2121.     this code is a full screen editor with edit_string()
  2122.  
  2123. **************************************************************************/
  2124.     call_window(TEXT_WIN);
  2125.     for(i = 0;i < 22;i++)
  2126.     {
  2127.         write_window(3,3 + i,"%s",edit_buff + (80 * i));
  2128.     }
  2129.     i = 0;
  2130.     while(done == 0)
  2131.     {
  2132.         write_window(31,25," F1 Help F2 Quit ");
  2133.         pick = edit_string(edit_buff + (80 * i),
  2134.             "***************************************************************************",
  2135.             3,3 + i,"TP");
  2136.         switch(pick)
  2137.         {
  2138.             case 0 : i = i + 1; break;
  2139.             case ALT_I : for(j = 20;j > i;j--)
  2140.                      {
  2141.                     memmove(edit_buff + (80 * (j + 1)),edit_buff + (80 * j),80);
  2142.                      }
  2143.                      memset(edit_buff + (80 * (i + 1)),0,80);
  2144.                      clear_window(0);
  2145.                      for(j = 0;j < 22;j++)
  2146.                      {
  2147.                     write_window(3,3 + j,"%s",edit_buff + (80 * j));
  2148.                      }
  2149.                      i = i + 1; 
  2150.                      break;
  2151.             case ESC : clear_window(0);
  2152.                    return(0);
  2153.             case CURSOR_UP : i = i - 1; break;
  2154.             case CURSOR_DN : i = i + 1; break;
  2155.             case F2 : done = data_ok(); 
  2156.                   if(done == 0)
  2157.                   {
  2158.                     read_file(edit_buff,"edit.tem",22 * 80,0L);
  2159.                     clear_window(0);
  2160.                     for(j = 0;j < 22;j++)
  2161.                     {
  2162.                         write_window(3,3 + j,"%s",edit_buff + (80 * j));
  2163.                     }
  2164.                   }
  2165.                   break;
  2166.             case F1 : text_screen(1);
  2167.                   break;
  2168.             case ALT_D : for(j = i;j < 22;j++)
  2169.                      {
  2170.                     memmove(edit_buff + (80 * j),edit_buff + (80 * (j + 1)),80);
  2171.                      }
  2172.                      memset(edit_buff + (80 * 21),0,80);
  2173.                      clear_window(0);
  2174.                      for(j = 0;j < 22;j++)
  2175.                      {
  2176.                     write_window(3,3 + j,"%s",edit_buff + (80 * j));
  2177.                      }
  2178.                      break;
  2179.         }
  2180.         if(i > 21)
  2181.         {
  2182.             i = 21;
  2183.         }
  2184.         if(i < 0)
  2185.         {
  2186.             i = 0;
  2187.         }
  2188.     }
  2189.  
  2190. /**************************************************************************/
  2191.  
  2192.     write_file(edit_buff,"edit.tem",(22 * 80),0L);
  2193.     clear_window(0);
  2194.     call_window(ENTER_WIN);
  2195.     write_window(3,2,"Display Changes Y/N ?");
  2196.     if(get_choice(25,2,"Y"))
  2197.     {
  2198.         uncall_window(ENTER_WIN);
  2199.         for(i = 0;i < 22;i++)
  2200.         {
  2201.             write_window(3,3 + i,"%s",edit_buff + (80 * i));
  2202.         }
  2203.         write_window(31,25,"   HIT ANY KEY   ");
  2204.         bioskey(0);
  2205.     }
  2206.     else
  2207.     {
  2208.         uncall_window(ENTER_WIN);
  2209.     }
  2210.     hide_cursor();
  2211.     uncall_window(TEXT_WIN);
  2212.     display_switch = 0;
  2213.     load_emulate(1);
  2214.     return(0);
  2215. }
  2216.  
  2217. /**************************************************************************
  2218.  
  2219.     this modual is a typical select y/n
  2220.  
  2221. ************************************************************************/
  2222.  
  2223. int data_ok(void)
  2224. {
  2225.     call_window(DATA_OK_WIN);
  2226.     write_window(3,2,"Data OK Y/N ?");
  2227.     if(get_choice(17,2,"Y"))
  2228.     {
  2229.         uncall_window(DATA_OK_WIN);
  2230.         return(1);
  2231.     }
  2232.     uncall_window(DATA_OK_WIN);
  2233.     return(0);
  2234. }
  2235.  
  2236. int scr_form(void)
  2237. {
  2238.     int i,data[10],j,y,total[10];
  2239.     char name[9][15] = {"Don","Ted","Sue","Mary","Bruce","Mike","Sam","Paul","John"};
  2240.  
  2241.     text_screen(19);
  2242.     for(j = 0;j < 10;j++)
  2243.     {
  2244.         total[j] = 0;
  2245.     }
  2246. /*********************************************************************
  2247.  
  2248.     this code draws a form on screen
  2249.  
  2250. *********************************************************************/
  2251.     call_window(TEXT_WIN);
  2252.     load_screen_form(0,"fultut.scr");
  2253.     write_window(33,25," HIT ANY KEY ");
  2254.     bioskey(0);
  2255.     y = 6;
  2256.     for(i = 0;i < 9;i++)
  2257.     {
  2258.         for(j = 0;j < 10;j++)
  2259.         {
  2260.             data[j] = random(100);
  2261.         }
  2262.         write_window(4,y,"%-s",name[i]);
  2263.         write_window(17,y,"%2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d",
  2264.             data[0],data[1],data[2],data[3],data[4],data[5],data[6],
  2265.             data[7],data[8],data[9]);
  2266.         for(j = 0;j < 10;j++)
  2267.         {
  2268.             total[j] = total[j] + data[j];
  2269.         }
  2270.         y = y + 2;
  2271.     }
  2272.     write_window(16,24,"%3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d",
  2273.         total[0],total[1],total[2],total[3],total[4],total[5],total[6],total[7],
  2274.         total[8],total[9]);
  2275.     bioskey(0);
  2276.     text_screen(20);
  2277. /*************************************************************************
  2278.  
  2279.     this code loads a print form and prints it
  2280.  
  2281. **************************************************************************/
  2282.  
  2283.  
  2284.     load_form(0,"fultut.prn");
  2285.     y = 6;
  2286.     for(i = 0;i < 10;i++)
  2287.     {
  2288.         total[i] = 0;
  2289.     }
  2290.     for(i = 0;i < 9;i++)
  2291.     {
  2292.         for(j = 0;j < 10;j++)
  2293.         {
  2294.             data[j] = random(100);
  2295.         }
  2296.         print_printf(4,y,"%s",name[i]);
  2297.         print_printf(17,y,"%2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d",
  2298.             data[0],data[1],data[2],data[3],data[4],data[5],data[6],
  2299.             data[7],data[8],data[9]);
  2300.         for(j = 0;j < 10;j++)
  2301.         {
  2302.             total[j] = total[j] + data[j];
  2303.         }
  2304.         y = y + 2;
  2305.     }
  2306.     print_printf(16,24,"%3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d",
  2307.          total[0],total[1],total[2],total[3],total[4],total[5],total[6],
  2308.          total[7],total[8],total[9]);
  2309.     call_window(PRINT_WIN);
  2310.  
  2311.     if(print_char(0x0c) != 0)
  2312.     {
  2313.         clear_window(0);
  2314.         write_window(4,2,"Printer error !");
  2315.         bioskey(0);
  2316.         uncall_window(PRINT_WIN);
  2317.         uncall_window(TEXT_WIN);
  2318.         return(0);
  2319.     }
  2320.     write_window(4,2,"Align Paper Now !");
  2321.     write_window(5,3,"HIT ANY KEY");
  2322.     bioskey(0);
  2323.     clear_window(0);
  2324.     write_window(8,2,"PRINTING!");
  2325.     if(print_buff() != 0)
  2326.     {
  2327.         clear_window(0);
  2328.         write_window(4,2,"Printer error !");
  2329.         bioskey(0);
  2330.     }
  2331.     uncall_window(PRINT_WIN);
  2332.     uncall_window(TEXT_WIN);
  2333.     display_switch = 0;
  2334.     return(0);
  2335. }
  2336.  
  2337. int song_demo(void)
  2338. {
  2339.     text_screen(21);
  2340.     call_window(TEXT_WIN);
  2341.     write_win_large(0,15,5,"Simptut song");
  2342.     write_win_large(0,15,14," with cords");
  2343.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  2344.     while(playsong(0,"simptut.sng") == 0)
  2345.     {}
  2346.     clear_window(0);
  2347.     write_win_large(0,15,5,"Little song");
  2348.     write_win_large(0,15,14," with notes");
  2349.     while(playsong(0,"little.sng") == 0)
  2350.     {}
  2351.     display_switch = 0;
  2352.     uncall_window(TEXT_WIN);
  2353.     return(0);
  2354. }
  2355.  
  2356. int font_demo_menu(void)
  2357. {
  2358.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  2359.     char lable[3][13] = {"Dual demo","Large demo","Multi demo"};
  2360.  
  2361.     if(display_switch)
  2362.     {
  2363.         load_screen(3);
  2364.         call_window(FONT_DEMO_WIN);
  2365.         call_menu(FONT_DEMO_MENU,3,2);
  2366.         save_screen(4);
  2367.     }
  2368.     else
  2369.     {
  2370.         load_screen(4);
  2371.     }
  2372.     display_switch = 1;
  2373.     textcolor(4);
  2374.     write_window(3,2,"D");
  2375.     write_window(3,3,"L");
  2376.     write_window(3,4,"M");
  2377.     save_screen_buff();
  2378.     i = 0;
  2379.     moushow();
  2380.     for(;;)
  2381.     {
  2382.         choice = 0;
  2383.         if(mouposition(&mousex,&mousey))
  2384.         {
  2385.             if((mousex > 7) & (mousex < 20))
  2386.             {
  2387.                 i = mousey - 6;
  2388.             }
  2389.         }
  2390.         if(i < 0)
  2391.         {
  2392.             i = 0;
  2393.         }
  2394.         if(i > 2)
  2395.         {
  2396.             i = 2;
  2397.         }
  2398.         if(old_i != i)
  2399.         {
  2400.             old_i = i;
  2401.             mouhide();
  2402.             load_screen_buff();
  2403.             simp_window(8,6 + i,19,6 + i,0,2,4,3,1,5,0,0,0);
  2404.             write_window(2,1,"%s",lable[i]);
  2405.             moushow();
  2406.         }
  2407.         if(bioskey(1) | (mou_switch == 0))
  2408.         {
  2409.             switch(bioskey(0))
  2410.             {
  2411.                 case ESC : choice = 9; break;
  2412.                 case CURSOR_DN : i = i + 1; break;
  2413.                 case CURSOR_UP : i = i - 1; break;
  2414.                 case ENTER : choice = 1; break;
  2415.                 case ALT_D : choice = 2; break;
  2416.                 case ALT_L : choice = 3; break;
  2417.                 case ALT_M : choice = 4; break;
  2418.             }
  2419.         }
  2420.         if(moubuttonpressed(LEFTBUTTON))
  2421.         {
  2422.             if((mousex > 7) & (mousex < 20) & (mousey > 5) & (mousey < 9))
  2423.             {
  2424.                 choice = 1;
  2425.             }
  2426.             else
  2427.             {
  2428.                 choice = 9;
  2429.             }
  2430.         }
  2431.         if(choice != 0)
  2432.         {
  2433.             break;
  2434.         }
  2435.     }
  2436.     mouhide();
  2437.     load_screen_buff();
  2438.     pick = 1;
  2439.     if(choice == 1)
  2440.     {
  2441.         choice = i + 2;
  2442.     }
  2443.     switch(choice)
  2444.     {
  2445.         case 2 : dual_font_demo(); break;
  2446.         case 3 : large_font_demo(); break;
  2447.         case 4 : multi_font_demo(); break;
  2448.         case 9 : pick = 0; break;
  2449.     }
  2450.     display_switch = 0;
  2451.     return(pick);
  2452. }
  2453.  
  2454.  
  2455. void dual_font_demo(void)
  2456. {
  2457.     call_window(TEXT_WIN);
  2458.     hide_cursor();
  2459.     load_font("script.fnt",1);
  2460.     write_win_bank(0,3,4,"This is the low bank font called by write_win_bank\(\)");
  2461.     write_win_bank(1,3,5,"This is the high bank font called by write_win_bank\(\)");
  2462.     write_win_bank(0,3,7,"You can use this for ");
  2463.     write_win_bank(1,24,7,"Highlight");
  2464.     write_win_bank(0,34,7,"like this");
  2465.     write_win_bank(1,(80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  2466.     bioskey(0);
  2467.     uncall_window(TEXT_WIN);
  2468.     hide_cursor();
  2469. }
  2470.  
  2471. void large_font_demo(void)
  2472. {
  2473.     call_window(TEXT_WIN);
  2474.     load_font("script.fnt",1);
  2475.     load_emulate(1);
  2476.     hide_cursor();
  2477.     write_win_large(0,3,3,"Low Bank Font.");
  2478.     write_win_large(1,3,13,"High Bank font.");
  2479.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  2480.     bioskey(0);
  2481.     uncall_window(TEXT_WIN);
  2482.     hide_cursor();
  2483. }
  2484.  
  2485.  
  2486. void multi_font_demo(void)
  2487. {
  2488.     call_window(TEXT_WIN);
  2489.     load_font("fdemo1.fnt",0);
  2490.     load_font("fdemo2.fnt",1);
  2491.     load_emulate(1);
  2492.     hide_cursor();
  2493.     write_win_multi(1,3,3,"This is font 1 from lower bank");
  2494.     write_win_multi(2,3,4,"This is font 2 from lower bank");
  2495.     write_win_multi(3,3,5,"This is font 3 from high bank");
  2496.     write_win_multi(4,3,6,"This is font 4 from high bank");
  2497.     write_win_multi_large(1,3,7,"FONT 1");
  2498.     write_win_multi_large(2,40,7,"FONT 2");
  2499.     write_win_multi_large(3,3,16,"FONT 3");
  2500.     write_win_multi_large(4,40,16,"FONT 4");
  2501.     write_win_multi(1,(80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  2502.     bioskey(0);
  2503.     clear_window(0);
  2504.     load_font("fdemo.fnt",1);
  2505.     load_emulate(1);
  2506.     hide_cursor();
  2507.     write_win_multi(1,3,3,"Some stuff you can do");
  2508.     write_win_multi_large(3,29,5,"D");
  2509.     write_win_multi_large(3,25,13,"ACB");
  2510.     write_win_multi(3,40,5,"D");
  2511.     write_win_multi(3,39,6,"ACB");
  2512.     write_win_multi(1,(80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  2513.     bioskey(0);
  2514.     uncall_window(TEXT_WIN);
  2515.     load_font("ibmstd.fnt",0);
  2516.     load_font("script.fnt",1);
  2517.     load_emulate(1);
  2518.     hide_cursor();
  2519. }
  2520.  
  2521. int vga_demo_menu(void)
  2522. {
  2523.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  2524.     char lable[3][17] = {"Color demo","Gray demo","Palete demo"};
  2525.  
  2526.     if(display_switch)
  2527.     {
  2528.         load_screen(3);
  2529.         call_window(VGA_DEMO_WIN);
  2530.         call_menu(VGA_DEMO_MENU,3,2);
  2531.         save_screen(4);
  2532.     }
  2533.     else
  2534.     {
  2535.         load_screen(4);
  2536.     }
  2537.     display_switch = 1;
  2538.     textcolor(4);
  2539.     write_window(3,2,"C");
  2540.     write_window(3,3,"G");
  2541.     write_window(3,4,"P");
  2542.     save_screen_buff();
  2543.     i = 0;
  2544.     moushow();
  2545.     for(;;)
  2546.     {
  2547.         choice = 0;
  2548.         if(mouposition(&mousex,&mousey))
  2549.         {
  2550.             if((mousex > 7) & (mousex < 22))
  2551.             {
  2552.                 i = mousey - 6;
  2553.             }
  2554.         }
  2555.         if(i < 0)
  2556.         {
  2557.             i = 0;
  2558.         }
  2559.         if(i > 2)
  2560.         {
  2561.             i = 2;
  2562.         }
  2563.         if(old_i != i)
  2564.         {
  2565.             old_i = i;
  2566.             mouhide();
  2567.             load_screen_buff();
  2568.             simp_window(8,6 + i,21,6 + i,0,2,4,3,1,5,0,0,0);
  2569.             write_window(2,1,"%s",lable[i]);
  2570.             moushow();
  2571.         }
  2572.         if(bioskey(1) | (mou_switch == 0))
  2573.         {
  2574.             switch(bioskey(0))
  2575.             {
  2576.                 case ESC : choice = 9; break;
  2577.                 case CURSOR_DN : i = i + 1; break;
  2578.                 case CURSOR_UP : i = i - 1; break;
  2579.                 case ENTER : choice = 1; break;
  2580.                 case ALT_C : choice = 2; break;
  2581.                 case ALT_G : choice = 3; break;
  2582.                 case ALT_P : choice = 4; break;
  2583.             }
  2584.         }
  2585.         if(moubuttonpressed(LEFTBUTTON))
  2586.         {
  2587.             if((mousex > 7) & (mousex < 22) & (mousey > 5) & (mousey < 9))
  2588.             {
  2589.                 choice = 1;
  2590.             }
  2591.             else
  2592.             {
  2593.                 choice = 9;
  2594.             }
  2595.         }
  2596.         if(choice != 0)
  2597.         {
  2598.             break;
  2599.         }
  2600.     }
  2601.     mouhide();
  2602.     load_screen_buff();
  2603.     pick = 1;
  2604.     if(choice == 1)
  2605.     {
  2606.         choice = i + 2;
  2607.     }
  2608.     switch(choice)
  2609.     {
  2610.         case 2 : color_demo(); break;
  2611.         case 3 : gray_demo(); break;
  2612.         case 4 : palette_64(); break;
  2613.         case 9 : pick = 0; break;
  2614.     }
  2615.     display_switch = 0;
  2616.     return(pick);
  2617. }
  2618.  
  2619. int color_demo(void)
  2620. {
  2621.     int i,j,m;
  2622.     char color[3];
  2623.     char color_temp[3];
  2624.     int done = 0;
  2625.  
  2626.     if(video_adapter != 9)
  2627.     {
  2628.         call_window(ERROR_WIN);
  2629.         write_window(3,2,"Must use VGA adapter card for this demo!");
  2630.         bioskey(0);
  2631.         uncall_window(ERROR_WIN);
  2632.         return(1);
  2633.     }
  2634.     color[0] = 0x00;
  2635.     color[1] = 0x00;
  2636.     color[2] = 0x00;
  2637.     read_color_reg(color_temp,3);
  2638.     write_color_reg(color,3);
  2639.     text_screen(22);
  2640.     call_window(TEXT_WIN);
  2641.     write_window((80 - strlen(" HIT ANY KEY TO EXIT ")) / 2,25," HIT ANY KEY TO EXIT ");
  2642.     popup_window(24,25,5,55,15,1,2,3,7,1,5,0,0,0);
  2643.     clear_window(0xdb);
  2644.     window(1,1,80,25);
  2645.     textattr(0x70);
  2646.     i = 0;
  2647.     j = 0;
  2648.     m = 0;
  2649.     done = 0;
  2650.     for(i = 0;i < 64;i++)
  2651.     {
  2652.         color[0] = i;
  2653.         write_color_reg(color,3);
  2654.         write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2655.         if(bioskey(1))
  2656.         {
  2657.             done = 1;
  2658.             break;
  2659.         }
  2660.         delay(100);
  2661.     }
  2662.     if(done == 0)
  2663.     {
  2664.         i = 0;
  2665.         color[0] = i;
  2666.         for(j = 0;j < 64;j++)
  2667.         {
  2668.             color[1] = j;
  2669.             write_color_reg(color,3);
  2670.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2671.             if(bioskey(1))
  2672.             {
  2673.                 done = 1;
  2674.                 break;
  2675.             }
  2676.             delay(100);
  2677.         }
  2678.     }
  2679.     if(done == 0)
  2680.     {
  2681.         j = 0;
  2682.         color[1] = j;
  2683.         for(m = 0;m < 64;m++)
  2684.         {
  2685.             color[2] = m;
  2686.             write_color_reg(color,3);
  2687.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2688.             if(bioskey(1))
  2689.             {
  2690.                 done = 1;
  2691.                 break;
  2692.             }
  2693.             delay(100);
  2694.         }
  2695.     }
  2696.     if(done == 0)
  2697.     {
  2698.         m = 0;
  2699.         color[2] = m;
  2700.         for(i = 0;i < 64;i++)
  2701.         {
  2702.             color[0] = i;
  2703.             write_color_reg(color,3);
  2704.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2705.             if(bioskey(1))
  2706.             {
  2707.                 done = 1;
  2708.                 break;
  2709.             }
  2710.             delay(100);
  2711.         }
  2712.     }
  2713.     if(done == 0)
  2714.     {
  2715.         i = 63;
  2716.         for(m = 0;m < 64;m++)
  2717.         {
  2718.             color[2] = m;
  2719.             write_color_reg(color,3);
  2720.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2721.             if(bioskey(1))
  2722.             {
  2723.                 done = 1;
  2724.                 break;
  2725.             }
  2726.             delay(100);
  2727.         }
  2728.     }
  2729.     if(done == 0)
  2730.     {
  2731.         m = 0;
  2732.         color[2] = 0;
  2733.         for(j = 0;j < 64;j++)
  2734.         {
  2735.             color[1] = j;
  2736.             write_color_reg(color,3);
  2737.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2738.             if(bioskey(1))
  2739.             {
  2740.                 done = 1;
  2741.                 break;
  2742.             }
  2743.             delay(100);
  2744.         }
  2745.     }
  2746.     if(done == 0)
  2747.     {
  2748.         j = 0;
  2749.         color[1] = j;
  2750.         i = 0;
  2751.         color[0] = i;
  2752.         for(m = 0;m < 64;m++)
  2753.         {
  2754.             color[2] = m;
  2755.             write_color_reg(color,3);
  2756.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2757.             if(bioskey(1))
  2758.             {
  2759.                 done = 1;
  2760.                 break;
  2761.             }
  2762.             delay(100);
  2763.         }
  2764.     }
  2765.     if(done == 0)
  2766.     {
  2767.         m = 63;
  2768.         color[2] = m;
  2769.         for(i = 0;i < 64;i++)
  2770.         {
  2771.             color[0] = i;
  2772.             write_color_reg(color,3);
  2773.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2774.             if(bioskey(1))
  2775.             {
  2776.                 done = 1;
  2777.                 break;
  2778.             }
  2779.             delay(100);
  2780.         }
  2781.     }
  2782.     if(done == 0)
  2783.     {
  2784.         i = 0;
  2785.         color[0] = i;
  2786.         for(j = 0;j < 64;j++)
  2787.         {
  2788.             color[1] = j;
  2789.             write_color_reg(color,3);
  2790.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2791.             if(bioskey(1))
  2792.             {
  2793.                 done = 1;
  2794.                 break;
  2795.             }
  2796.             delay(100);
  2797.         }
  2798.     }
  2799.     if(done == 0)
  2800.     {
  2801.         j = 0;
  2802.         color[1] = j;
  2803.         m = 0;
  2804.         color[2] = m;
  2805.         for(j = 0;j < 64;j++)
  2806.         {
  2807.             color[1] = j;
  2808.             write_color_reg(color,3);
  2809.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2810.             if(bioskey(1))
  2811.             {
  2812.                 done = 1;
  2813.                 break;
  2814.             }
  2815.             delay(100);
  2816.         }
  2817.     }
  2818.     if(done == 0)
  2819.     {
  2820.         j = 63;
  2821.         for(m = 0;m < 64;m++)
  2822.         {
  2823.             color[2] = m;
  2824.             write_color_reg(color,3);
  2825.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2826.             if(bioskey(1))
  2827.             {
  2828.                 done = 1;
  2829.                 break;
  2830.             }
  2831.             delay(100);
  2832.         }
  2833.     }
  2834.     if(done == 0)
  2835.     {
  2836.         m = 0;
  2837.         color[2] = m;
  2838.         for(i = 0;i < 64;i++)
  2839.         {
  2840.             color[0] = i;
  2841.             write_color_reg(color,3);
  2842.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2843.             if(bioskey(1))
  2844.             {
  2845.                 done = 1;
  2846.                 break;
  2847.             }
  2848.             delay(100);
  2849.         }
  2850.     }
  2851.     if(done == 0)
  2852.     {
  2853.         i = 0;
  2854.         color[0] = i;
  2855.         j = 0;
  2856.         color[1] = j;
  2857.         for(m = 0;m < 64;m++)
  2858.         {
  2859.             color[2] = m;
  2860.             write_color_reg(color,3);
  2861.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2862.             if(bioskey(1))
  2863.             {
  2864.                 done = 1;
  2865.                 break;
  2866.             }
  2867.             delay(100);
  2868.         }
  2869.     }
  2870.     if(done == 0)
  2871.     {
  2872.         m = 63;
  2873.         for(i = 0;i < 64;i++)
  2874.         {
  2875.             color[0] = i;
  2876.             write_color_reg(color,3);
  2877.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2878.             if(bioskey(1))
  2879.             {
  2880.                 done = 1;
  2881.                 break;
  2882.             }
  2883.             delay(100);
  2884.         }
  2885.     }
  2886.     if(done == 0)
  2887.     {
  2888.         i = 63;
  2889.         for(j = 0;j < 64;j++)
  2890.         {
  2891.             color[1] = j;
  2892.             write_color_reg(color,3);
  2893.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  2894.             if(bioskey(1))
  2895.             {
  2896.                 done = 1;
  2897.                 break;
  2898.             }
  2899.             delay(100);
  2900.         }
  2901.     }
  2902.     write_color_reg(color_temp,3);
  2903.     unpopup_window(24);
  2904.     uncall_window(TEXT_WIN);
  2905.     return(0);
  2906. }
  2907.  
  2908.  
  2909. int gray_demo(void)
  2910. {
  2911.     int i;
  2912.     char character[2];
  2913.  
  2914.     if(video_adapter != 9)
  2915.     {
  2916.         call_window(ERROR_WIN);
  2917.         write_window(3,2,"Must use VGA adapter card for this demo!");
  2918.         bioskey(0);
  2919.         uncall_window(ERROR_WIN);
  2920.         return(1);
  2921.     }
  2922.  
  2923.     text_screen(23);
  2924.     save_color_regs("temp.reg");
  2925.     call_window(TEXT_WIN);
  2926.     load_default_palette(0);
  2927.     load_font("ibmstd.fnt",1);
  2928.     popup_window(24,30,10,50,12,1,2,15,1,1,8,0,0,0);
  2929.     character[0] = 0xdb;
  2930.     character[1] = 0x00;
  2931.     for(i = 0;i < 16;i++)
  2932.     {
  2933.         textcolor(i);
  2934.         write_window(3 + i,2,"%s",character);
  2935.     }
  2936.     window(1,1,80,25);
  2937.     textattr(0x70);
  2938.     write_window(25,14,"This is the color palette.");
  2939.     write_window(25,15,"Hit any key to see grayscale.");
  2940.     bioskey(0);
  2941.     gray_color_regs();
  2942.     write_window((80 - strlen(" HIT ANY KET TO EXIT ")) / 2,25," HIT ANY KEY TO EXIT ");
  2943.     bioskey(0);
  2944.     unpopup_window(24);
  2945.     load_color_regs("temp.reg");
  2946.     remove("temp.reg");
  2947.     load_default_palette(1);
  2948.     load_emulate(1);
  2949.     uncall_window(TEXT_WIN);
  2950.     return(0);
  2951. }
  2952.  
  2953. int palette_64(void)
  2954. {
  2955.     char buff[20 * 64];
  2956.     char *temp_point;
  2957.     int i;
  2958.  
  2959.     text_screen(24);
  2960.     if(read_file(buff,"define.dat",20 * 64,0L) > 0)
  2961.     {
  2962.         return(1);
  2963.     }
  2964.     call_window(TEXT_WIN);
  2965.     write_window((80 - strlen(" ANY KEY TO TOGGLE COLOR  ESC TO EXIT ")) / 2,25," ANY KEY TO TOGGLE  ESC TO EXIT ");
  2966.     popup_window(8,20,5,60,15,1,2,3,1,1,5,0,0,0);
  2967.     clear_window(0xdb);
  2968.     window(1,1,80,25);
  2969.     textattr(0x70);
  2970.     temp_point = strtok(buff,"\r\n");
  2971.     for(i = 0;i < 64;i++)
  2972.     {
  2973.         write_palette(i,3);
  2974.         write_window(30,18,"Color define %s = %d",temp_point,i);
  2975.         if(bioskey(0) == 283)
  2976.         {
  2977.             break;
  2978.         }
  2979.         write_window(30,18,"                                                ");
  2980.         temp_point = strtok(NULL,"\r\n");
  2981.     }
  2982.     write_palette(3,3);
  2983.     uncall_window(TEXT_WIN);
  2984.     return(0);
  2985. }
  2986.  
  2987. int mouse_demo(void)
  2988. {
  2989.     int type = 1,done = 0;
  2990.     int moux,mouy,pix_x,pix_y;
  2991.  
  2992.     text_screen(31);
  2993.     load_font("script.fnt",1);
  2994.     load_emulate(1);
  2995.     call_window(TEXT_WIN);
  2996.     write_window((80 - strlen(" Hit Any Key to exit ")) / 2,25," HIT ANY KEY TO EXIT ");
  2997.     write_win_large(0,5,3,"Mouse v 2.3");
  2998.     write_win_large(1,5,11,"Mouse v 2.3");
  2999.     write_win_bank(0,55,9,"Mouse v 2.3");
  3000.     write_win_bank(1,55,16,"Mouse v 2.3");
  3001.     write_window(5,23,"Use LEFT and RIGHT button press to change cursor.");
  3002.     moureset();
  3003.     moushow();
  3004.     while(done == 0)
  3005.     {
  3006.         mouposition(&moux,&mouy);
  3007.         moupositionpix(&pix_x,&pix_y);
  3008.         if(buttons == 2)
  3009.         {
  3010.             if(moubuttonpressed(LEFTBUTTON))
  3011.             {
  3012.                 write_window(40,20,"Left button pressed  ");
  3013.                 type++;
  3014.                 if(type > 8)
  3015.                 {
  3016.                     type = 8;
  3017.                 }
  3018.                 moucursortype(type);
  3019.                 mouposition(&moux,&mouy);
  3020.             }
  3021.             if(moubuttonpressed(RIGHTBUTTON))
  3022.             {
  3023.                 write_window(40,20,"Right button pressed ");
  3024.                 type--;
  3025.                 if(type < 1)
  3026.                 {
  3027.                     type = 1;
  3028.                 }
  3029.                 moucursortype(type);
  3030.                 mouposition(&moux,&mouy);
  3031.             }
  3032.             if(moubuttonrelease(LEFTBUTTON))
  3033.             {
  3034.                 write_window(40,20,"Left button released ");
  3035.             }
  3036.             if(moubuttonrelease(RIGHTBUTTON))
  3037.             {
  3038.                 write_window(40,20,"Rigth button released");
  3039.             }
  3040.         }
  3041.         else
  3042.         {
  3043.             if(moubuttonpressed(LEFTBUTTON))
  3044.             {
  3045.                 write_window(40,20,"Left button pressed   ");
  3046.                 type++;
  3047.                 if(type > 32)
  3048.                 {
  3049.                     type = 32;
  3050.                 }
  3051.                 moucursortype(type);
  3052.                 mouposition(&moux,&mouy);
  3053.             }
  3054.             if(moubuttonpressed(RIGHTBUTTON))
  3055.             {
  3056.                 write_window(40,20,"Right button pressed  ");
  3057.                 type--;
  3058.                 if(type < 1)
  3059.                 {
  3060.                     type = 1;
  3061.                 }
  3062.                 moucursortype(type);
  3063.                 mouposition(&moux,&mouy);
  3064.             }
  3065.             if(moubuttonrelease(LEFTBUTTON))
  3066.             {
  3067.                 write_window(40,20,"Left button released  ");
  3068.             }
  3069.             if(moubuttonrelease(RIGHTBUTTON))
  3070.             {
  3071.                 write_window(40,20,"Rigth button released ");
  3072.             }
  3073.             if(moubuttonpressed(MIDBUTTON))
  3074.             {
  3075.                 write_window(40,20,"Middle button pressed ");
  3076.             }
  3077.             if(moubuttonrelease(MIDBUTTON))
  3078.             {
  3079.                 write_window(40,20,"Middle button released");
  3080.             }
  3081.         }
  3082.         write_window(5,19,"Number of buttons = %1d",buttons);
  3083.         write_window(5,21,"Pix X = %3d Pix Y = %3d",pix_x,pix_y);
  3084.         write_window(5,22,"    X = %2d     Y = %2d",moux,mouy);
  3085.         if(bioskey(1))
  3086.         {
  3087.             done = 1;
  3088.         }
  3089.         write_window(5,20,"Cursor type number %2d",type);
  3090.     }
  3091.     moucursortype(1);
  3092.     mouhide();
  3093.     uncall_window(TEXT_WIN);
  3094.     return(0);
  3095. }
  3096.  
  3097. void load_default_palette(int toggle)
  3098. {
  3099.     int i;
  3100.  
  3101.     for(i = 0;i < 16;i++)
  3102.     {
  3103.         switch(i)
  3104.         {
  3105.             case 0 : switch(toggle)
  3106.                  {
  3107.                     case 0 : set_palette(i,C_BLACK); break;
  3108.                     case 1 : set_palette(i,C_BLACK); break;
  3109.                     case 2 : palette[i] = C_BLACK; break;
  3110.                  }
  3111.                  break;
  3112.             case 1 : switch(toggle)
  3113.                  {
  3114.                     case 0 : set_palette(i,C_BLUE); break;
  3115.                     case 1 : set_palette(i,C_BLUE); break;
  3116.                     case 2 : palette[i] = C_BLUE; break;
  3117.                  }
  3118.                  break;
  3119.             case 2 : switch(toggle)
  3120.                  {
  3121.                     case 0 : set_palette(i,C_GREEN); break;
  3122.                     case 1 : set_palette(i,C_YELLOW); break;
  3123.                     case 2 : palette[i] = C_YELLOW; break;
  3124.                  }
  3125.                  break;
  3126.             case 3 : switch(toggle)
  3127.                  {
  3128.                     case 0 : set_palette(i,C_CYAN); break;
  3129.                     case 1 : set_palette(i,C_CYAN); break;
  3130.                     case 2 : palette[i] = C_CYAN; break;
  3131.                  }
  3132.                  break;
  3133.             case 4 : switch(toggle)
  3134.                  {
  3135.                     case 0 : set_palette(i,C_RED); break;
  3136.                     case 1 : set_palette(i,C_RED); break;
  3137.                     case 2 : palette[i] = C_RED; break;
  3138.                  }
  3139.                  break;
  3140.             case 5 : switch(toggle)
  3141.                  {
  3142.                     case 0 : set_palette(i,C_MAGENTA); break;
  3143.                     case 1 : set_palette(i,C_DARK_GRAY_2); break;
  3144.                     case 2 : palette[i] = C_DARK_GRAY_2; break;
  3145.                  }
  3146.                  break;
  3147.             case 6 : switch(toggle)
  3148.                  {
  3149.                     case 0 : set_palette(i,C_BROWN); break;
  3150.                     case 1 : set_palette(i,C_WHITE); break;
  3151.                     case 2 : palette[i] = C_WHITE; break;
  3152.                  }
  3153.                  break;
  3154.             case 7 : switch(toggle)
  3155.                  {
  3156.                     case 0 : set_palette(i,C_LIGHT_GRAY); break;
  3157.                     case 1 : set_palette(i,C_LIGHT_GRAY); break;
  3158.                     case 2 : palette[i] = C_LIGHT_GRAY; break;
  3159.                  }
  3160.                  break;
  3161.             case 8 : switch(toggle)
  3162.                  {
  3163.                     case 0 : set_palette(i,C_DARK_GRAY_2); break;
  3164.                     case 1 : set_palette(i,C_BLACK); break;
  3165.                     case 2 : palette[i] = C_BLACK; break;
  3166.                  }
  3167.                  break;
  3168.             case 9 : switch(toggle)
  3169.                  {
  3170.                     case 0 : set_palette(i,C_BLUE_3); break;
  3171.                     case 1 : set_palette(i,C_BLUE); break;
  3172.                     case 2 : palette[i] = C_BLUE; break;
  3173.                  }
  3174.                  break;
  3175.             case 10 : switch(toggle)
  3176.                  {
  3177.                     case 0 : set_palette(i,C_GREEN_4); break;
  3178.                     case 1 : set_palette(i,C_YELLOW); break;
  3179.                     case 2 : palette[i] = C_YELLOW; break;
  3180.                  }
  3181.                  break;
  3182.             case 11 : switch(toggle)
  3183.                  {
  3184.                     case 0 : set_palette(i,C_PALE_CYAN); break;
  3185.                     case 1 : set_palette(i,C_CYAN); break;
  3186.                     case 2 : palette[i] = C_CYAN; break;
  3187.                  }
  3188.                  break;
  3189.             case 12 : switch(toggle)
  3190.                  {
  3191.                     case 0 : set_palette(i,C_LIGHT_RED); break;
  3192.                     case 1 : set_palette(i,C_RED); break;
  3193.                     case 2 : palette[i] = C_RED; break;
  3194.                  }
  3195.                  break;
  3196.             case 13 : switch(toggle)
  3197.                  {
  3198.                     case 0 : set_palette(i,C_PALE_MAGENTA); break;
  3199.                     case 1 : set_palette(i,C_DARK_GRAY_2); break;
  3200.                     case 2 : palette[i] = C_DARK_GRAY_2; break;
  3201.                  }
  3202.                  break;
  3203.             case 14 : switch(toggle)
  3204.                  {
  3205.                     case 0 : set_palette(i,C_YELLOW); break;
  3206.                     case 1 : set_palette(i,C_WHITE); break;
  3207.                     case 2 : palette[i] = C_WHITE; break;
  3208.                  }
  3209.                  break;
  3210.             case 15 : switch(toggle)
  3211.                  {
  3212.                     case 0 : set_palette(i,C_WHITE); break;
  3213.                     case 1 : set_palette(i,C_LIGHT_GRAY); break;
  3214.                     case 2 : palette[i] = C_LIGHT_GRAY; break;
  3215.                  }
  3216.                  break;
  3217.         }
  3218.     }
  3219. }
  3220.  
  3221. void view_tut(int file_num,char *lable)
  3222. {
  3223.     call_window(TEXT_WIN);
  3224.     write_window((80 - strlen(lable) - 2) / 2,1," %s ",lable);
  3225.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  3226.     load_text(file_num,"fulfunc1.men");
  3227.     bioskey(0);
  3228.     uncall_window(TEXT_WIN);
  3229. }
  3230.